-
VERWEIS AUF VERWANDTE ANMELDUNGEN
-
Die vorliegende Anmeldung beansprucht die Priorität für die am 10. Dezember 2019 eingereichte vorläufige US-Patentanmeldung mit der Seriennummer
62/946.352 und die am 3. Dezember 2020 eingereichte nicht vorläufige US-Patentanmeldung mit der Seriennummer 17/111.218, deren jeweiliger Inhalt durch Bezugnahme hierin in vollem Umfang aufgenommen wird.
-
HINTERGRUND
-
Leistungsbewertungsfähigkeiten in Entwurfswerkzeugen ermöglichen dem Entwickler, Timing Closure einzuhalten, und sicherzustellen, dass ein gegebener Entwurf seine Leistungsanforderungen erfüllt, sobald es auf dem Ziel-Silizium implementiert ist. Diese Schlüsselfähigkeit erfordert, dass Entwurfswerkzeuge, die Einfluss auf die Entwurfsleistung haben, in einigen Fällen hochgenaue Verzögerungsberechnungsalgorithmen für jede Komponente, Zelle oder IP und für jede in einem Entwurf verwendete Netztopologie miteinbeziehen. Gleichzeitig stellt die Verzögerungsberechnung zunehmend erhebliche Herausforderungen dar, da sich die Technologie zu kleineren Prozesstechnologieknoten hin entwickelt und folglich die Komplexität und Vielfalt der in dieselbe Hardware-Architektur integrierten Fähigkeiten und Funktionen zunimmt. Dies wiederum macht es sehr schwierig, herkömmliche Verzögerungsberechnungsalgorithmen abzustimmen, zu testen und hochgenaue Ergebnisse sicherzustellen.
-
Kleinere Technologieknoten erhöhen die Zahl der Parameter, die sich auf die Signallaufzeitverzögerungen auswirken, und erfordern Anpassungen der bestehenden Parameter. Beispiele für solche neuen und/oder modifizierten Parameter schließen On-Chip-Variation, IR-Abfall, Kopplungskapazität, Verhältnis von Signalübergangsverzögerungen und -laufzeitverzögerungen, Verhältnis von Drahtwiderstand und Drahtkapazität und Verhältnis von Signalübergangsverzögerungen über die gesamte Taktperiode ein.
-
In ähnlicher Weise führt auch die zunehmende Komplexität moderner System-On-Chip (SoC)-Architekturen zu einer größeren Vielfalt an Netztopologien und Kontexten, die von Entwurfswerkzeugen präzise verarbeitet werden müssen. Darüber hinaus ermöglicht eine solche Komplexität die Integration viel größerer Entwürfe in denselben Chip, was zu einem erheblichen Anstieg der Entwicklungszeit für die Abstimmung herkömmlicher Verzögerungsberechnungsalgorithmen (was sich auf die Markteinführungszeit eines Produkts wie eines feldprogrammierbaren Gate-Arrays (Field Programmable Gate Array, FPGA) auswirkt) sowie der Laufzeit, welche die Entwickler bei der Iteration dieser Algorithmen zur Erzielung von Timing Closure erleben, führt.
-
Zu den derzeit angewandten Verfahren gehört eine Implementierung der analytischen Methode der Momentanpassung, d. h. der asymptotischen Wellenformauswertung (Asymptotic Waveform Evaluation, AWE), die auf der expliziten Momentanpassung beruht, um die Schaltungsantwort im Zeitbereich oder Frequenzbereich in Form eines Modells reduzierter Ordnung zu approximieren. Neuere Implementierungen, die vor allem beim Entwurf anwendungsspezifischer integrierter Schaltungen (ASIC) verwendet werden, wie Passive Reduced-order Interconnect Macromodeling Algorithm (PRIMA) und Pade via Lanczos (PVL), verwenden impliziten Momentanpassung basierend auf Krylov-Unterräumen. Dieses Verfahren gilt seit langem als ziemlich präzise, wenn es darum geht effektive und stabile Lösungen für viele Verbindungstopologien, insbesondere in einem FPGA-Kontext, zu bieten. Es haben sich jedoch in letzter Zeit Anzeichen von Schwächen in Bezug auf Konvergenz und Stabilität gezeigt. Die zunehmende Komplexität der FPGA-Verbindungen mit verschiedenen Komponententypen stellt eine zusätzliche Herausforderung dar. Während eine Approximation erster Ordnung, wie beschrieben in Gupta, R., Tutuianu, B., Pileggi, L.T., „The Elmore delay as a bound for RC trees with generalized input signals“, IEEE Transactions on the Computer-Aided Design of Integrated Circuits and Systems, Band: 16, Ausgabe: 1, S. 95-104 wahrscheinlich stabil ist, ist keine solche Garantie für Erweiterungen höherer Ordnung vorhanden. Bei den meisten Designs, die in 28-nm-SoC-FPGAs implementiert sind, scheitern bis zu 20 % der Netzverzögerungen mit einer AWE-Genauigkeitsstufe der 3. Ordnung und erfordern die Rückkehr zur 2. Ordnung, die weniger genau ist. Eine weitere Einschränkung von AWE bezieht sich auf die Unfähigkeit des Modells reduzierter Ordnung, Passivität zu garantieren.
-
Ein alternativer Ansatz, der verwendet wurde, besteht darin, softwarefreundliche Architekturen zu entwickeln; zum Beispiel, indem man es eine Anforderung für die Architektur macht, dass diese Timing-freundlich ist. Bei einem solchen Ansatz ist die Architektur stark gepuffert, ohne zwischengeschaltete Abgriffe auf ihren Verlegewege, und weist, wenn möglich, ausgeglichene Anstiegs- und Abfallzeiteigenschaften auf. Eine solche Architektur weist ein einigermaßen vorhersagbares Timing auf, was die Verwendung von Nachschlagetabellen ermöglicht, die unter Verwendung eines hochgenauen elektrischen Simulators, wie dem Simulationsprogramm mit Schwerpunkt auf integrierten Schaltungen (Simulation Program with Integrated Circuit Emphasis, SPICE), mit vor simulierten Werten befüllt wurden. In diesem Fall ist kein komplexer numerischer Löser erforderlich, um qualitativ hochwertige Timing-Informationen abzuleiten. Diese Vereinfachung ergibt sich jedoch auf Kosten einer begrenzten Routingflexibilität und begrenzt folglich die maximale Leistung, die unter Verwendung solcher Architekturen erreicht werden kann.
-
Daher ist ein moderner Verzögerungsberechnungsalgorithmus erforderlich, der im Vergleich zur elektrischen Simulation hochgenau ist (d. h. innerhalb weniger Prozent von SPICE), sich leicht auf Technologien im tiefen Submikrometerbereich abstimmen lässt, äußerst zuverlässig ist und von den Endbenutzern schneller ausgeführt werden kann als bisherige Lösungen nach dem Stand der Technik.
-
KURZDARSTELLUNG
-
Gemäß einem Gesichtspunkt der Erfindung wird ein Verfahren für den Entwurf integrierter Schaltungen (IC) mit Verzögerungsverifizierung offenbart, welches das Speichern von Konfigurationsdateien eines maschinellen Lernmodells (ML-Modells) für die Anstiegsgeschwindigkeit, eines Netzverzögerungs-ML-Modells und eines Zellenverzögerungs-ML-Modells einschließt. Ein Benutzerentwurf wird empfangen und Merkmalswerte werden von dem Benutzerentwurf für jedes Anstiegsgeschwindigkeitsmerkmal, Netzverzögerungsmerkmal und Zellverzögerungsmerkmal extrahiert, um Anstiegsgeschwindigkeitsmerkmalswerte, Netzverzögerungsmerkmalswerte und Zellverzögerungsmerkmalswerte zu erhalten. Die Konfigurationsdateien des ML-Modells für die Anstiegsgeschwindigkeit werden zur Bildung eines Anstiegsgeschwindigkeitsinferenzkerns geladen, wobei die Vorgänge des Anstiegsgeschwindigkeitsinferenzkerns unter Verwendung der extrahierten Anstiegsgeschwindigkeitsmerkmalswerte als Eingang durchgeführt werden, um vorhergesagte Anstiegsgeschwindigkeitswerte zu berechnen, und die vorhergesagten Anstiegsgeschwindigkeitswerte werden an Entwurfablaufswerkzeuge gesendet. Die Konfigurationsdateien des Netzverzögerungs-ML-Modells werden zur Bildung eines Netzverzögerungsinferenzkerns geladen, wobei die Vorgänge des Netzverzögerungsinferenzkerns unter Verwendung der extrahierten Netzverzögerungsmerkmalswerte als Eingang durchgeführt werden, um die vorhergesagten Netzverzögerungswerte zu berechnen, und die vorhergesagten Netzverzögerungswerte werden an die Entwurfablaufswerkzeuge gesendet. Die Konfigurationsdateien des Zellenverzögerungs-ML-Modells werden zur Bildung eines Zellenverzögerungsinferenzkerns geladen, wobei die Vorgänge des Zellenverzögerungsinferenzkerns unter Verwendung der extrahierten Zellenverzögerungsmerkmalswerte als Eingang durchgeführt werden, um vorhergesagte Zellenverzögerungswerte zu berechnen, und die vorhergesagten Zellenverzögerungswerte werden an die Entwurfablaufswerkzeuge gesendet. Der Benutzerentwurf wird so lange iteriert, bis ein endgültiger Benutzerentwurf vorliegt, der frei von Timing-Verletzungen ist.
-
Es wird ein IC-Entwurfssystem mit Verzögerungsverifizierung offenbart, das einen Datenspeicher einschließt, der zum Speichern von Konfigurationsdateien für ein Anstiegsgeschwindigkeits-ML-Modell, ein Netzverzögerungs-ML-Modell und ein Zellenverzögerungs-ML-Modell konfiguriert ist. Ein Benutzerentwurf-Merkmalsextraktor ist mit dem Datenspeicher gekoppelt und ist konfiguriert, um Anstiegsgeschwindigkeitsmerkmalswerte, Netzverzögerungsmerkmalswerte und Zellenverzögerungsmerkmalswerte aus einem Benutzerentwurf zu extrahieren. Die ML-Entwurfablaufswerkzeuge sind mit dem Benutzerentwurf-Merkmalsextraktor und mit dem Datenspeicher gekoppelt. Ein Vorhersage-ML-Modul ist mit dem Datenspeicher, dem Benutzerentwurf-Merkmalsextraktor und den ML-Entwurfablaufswerkzeugen gekoppelt. Das Vorhersage-ML-Modul ist konfiguriert, um die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells zu laden, um einen Anstiegsgeschwindigkeitsinferenzkern zu bilden, um die Konfigurationsdateien des Netzverzögerungs-ML-Modells zu laden, um einen Netzverzögerungsinferenzkern zu bilden, und um die Konfigurationsdateien des Zellenverzögerungs-ML Modells zu laden, um einen Zellenverzögerungsinferenzkern zu bilden. Das Vorhersage-ML-Modul ist konfiguriert, um Vorgänge des Anstiegsgeschwindigkeitsinferenzkerns unter Verwendung der extrahierten Anstiegsgeschwindigkeitsmerkmalswerte als Eingang zur Berechnung vorhergesagter Anstiegsgeschwindigkeitswerte durchzuführen, um Vorgänge des Netzverzögerungsinferenzkerns unter Verwendung der extrahierten Netzverzögerungsmerkmalswerte als Eingang zur Berechnung vorhergesagter Netzverzögerungswerte durchzuführen und um Vorgänge des Zellenverzögerungsinferenzkerns unter Verwendung der extrahierten Zellenverzögerungsmerkmalswerte als Eingang zur Berechnung vorhergesagter Zellenverzögerungswerte durchzuführen. Das Vorhersage-ML-Modul ist konfiguriert, um die vorhergesagten Anstiegsgeschwindigkeitswerte, die vorhergesagten Netzverzögerungswerte und die vorhergesagten Zellenverzögerungswerte an die Entwurfablaufswerkzeuge zu senden. Die ML-Entwurfablaufswerkzeuge sind dazu konfiguriert, den Benutzerentwurf zu iterieren, bis der Benutzerentwurf frei von Timing-Verletzungen ist, um einen endgültigen Benutzerentwurf zu identifizieren.
-
Die vorliegende Erfindung bietet mehrere Vorteile gegenüber dem Stand der Technik. Die vorliegende Erfindung weist im Vergleich zu vielen Verfahren/Systemen des Standes der Technik ein schnelleres Laufzeitpotential während der Inferenz des ML-Modells auf. Die langsame Phase ist das Training, das nur einmal für jedes Produkt während des Entwurfs des Werkzeugs durchgeführt wird (wenn die ML-Modelle erzeugt werden). Die vorliegende Erfindung ist zuverlässiger als viele Verfahren/Systeme des Standes der Technik, da sie sich nicht auf menschliche Interpretationen stützt, um eine genaue Modellierung aktiver Komponenten zu erreichen, und das Verfahren und die Vorrichtung der vorliegenden Erfindung vermeidet die numerischen Einschränkungen eines iterativen Lösers, der für jede Produktgeneration bewertet werden muss. Darüber hinaus ist die vorliegende Erfindung skalierbar, so dass neue Funktionen, die sich auf die Verzögerungsberechnung auswirken, leicht eingeschlossen werden können.
-
Figurenliste
-
Die Erfindung wird im Folgenden unter Bezugnahme auf Ausführungsformen und auf die Zeichnungsfiguren ausführlicher erläutert, in denen Folgendes gezeigt ist:
- 1 ist ein Blockdiagramm eines IC-Entwurf und ML-Modell erzeugenden Systems, gemäß einem Gesichtspunkt der vorliegenden Erfindung;
- 2 ist ein Blockdiagramm eines IC-Entwurfssystems mit Verzögerungsverifizierung unter Verwendung eines Inferenzkerns gemäß einem Gesichtspunkt der vorliegenden Erfindung;
- 3 ist ein Ablaufdiagramm, das ein Verfahren für den IC-Entwurf mit Verzögerungsverifizierung gemäß einem Gesichtspunkt der vorliegenden Erfindung zeigt;
- 4 ist ein Diagramm, das einen Anstiegsgeschwindigkeitsinferenzkern gemäß einem Gesichtspunkt der vorliegenden Erfindung veranschaulicht;
- 5 ist ein Diagramm, das einen Netzverzögerungsinferenzkern gemäß einem Gesichtspunkt der vorliegenden Erfindung veranschaulicht;
- 6 ist ein Diagramm, das einen Zellenverzögerungsinferenzkern gemäß einem Gesichtspunkt der vorliegenden Erfindung veranschaulicht;
- 7 ist ein Ablaufdiagramm, das ein Verfahren zum Erzeugen eines ML-Modells gemäß einem Gesichtspunkt der vorliegenden Erfindung zeigt; und
- 8 ist ein Ablaufdiagramm, das ein Verfahren zum Durchführen von Validierung und Testen eines ML-Modells gemäß einem Gesichtspunkt der vorliegenden Erfindung zeigt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Der Durchschnittsfachmann wird erkennen, dass die folgende Beschreibung nur veranschaulichend und in keiner Weise einschränkend ist. Diesem Fachmann werden ohne Weiteres auch andere Ausführungsformen einfallen.
-
1 zeigt ein IC-Entwurf und ML-Modell erzeugendes System 40, das ein Eingangs- und Ausgangsmodul (E/A-Modul) 1 aufweist, das eine oder mehrere physische Vorrichtungen zum Koppeln des Eingangs mit dem IC-Entwurf und ML-Modell erzeugenden System 40 und zum Senden des Ausgangs von dem IC-Entwurf und ML-Modell erzeugenden System 40 einschließt. Das E/A-Modul 1 schließt einen Merkmalseingang 2 und einen vorhandenen Referenzdesign-Beispieleingang 3 (ERD-Beispieleingang) ein. Das IC-Entwurf und ML-Modell erzeugende System 40 schließt ferner einen ERD-Merkmalsextraktor 4, Entwurfablaufswerkzeuge 5, das Trainings-, Validierungs- und Test-ML-Modul 6, den Datenspeicher 11 und ein oder mehrere IC-Entwurfssysteme mit Verzögerungsverifizierung unter Verwendung des Inferenzkerns 20, das hierin nachstehend einfach als „IC-Entwurfssystem“ 20 bezeichnet werden wird, ein. Optional schließen das IC-Entwurf und ML-Modell erzeugende System 40 einen Prozessor 7 ein. Das E/A-Modul 1, der Merkmalseingang 2, der ERD-Beispieleingang 3, der ERD-Merkmalsextraktor 4, das Trainings-, Validierungs- und Test-ML-Modul 6, die Entwurfablaufswerkzeuge 5, der Datenspeicher 11 und der optionale Prozessor 7 sind über ein Kommunikations-Subsystem 9 (z. B. einen Systembus) miteinander gekoppelt. Das E/A-Modul 1, der Merkmalseingang 2, der ERD-Beispieleingang 3, der ERD-Merkmalsextraktor 4, das Trainings-, Validierungs- und Test-ML-Modul 6, die Entwurfablaufswerkzeuge 5, der Datenspeicher 11 und der optionale Prozessor 7 bilden ein ML-Modell erzeugendes System 10, das beispielsweise in einem einzigen Computergehäuse angeordnet werden kann, wobei jeder ERD-Merkmalsextraktor 4, jedes Trainings-, Validierungs- und Test-ML-Modul 6, und jedes der Entwurfablaufswerkzeuge 5 entsprechende Softwaremodule sind. In einem Beispiel ist das ML-Modul 6 ein ML-Softwareprogramm wie das TensorFlow-Softwareprogramm von Google, LLC in Mountain View, CA, das betreibbar ist, um ein ML-Modell zu erzeugen, zu trainieren, zu validieren, zu testen und zu speichern.
-
Der Datenspeicher 11 schließt eine Anstiegsgeschwindigkeitsdatenbank 12, eine Netzverzögerungsdatenbank 13, eine Zellenverzögerungsdatenbank 14 ein. In einem Beispiel schließen jede Komponente des Datenspeichers 11, insbesondere die Anstiegsgeschwindigkeitsdatenbank 12, die Netzverzögerungsdatenbank 13 und die Zellenverzögerungsdatenbank 14 einen oder mehrere von Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, Festplattenlaufwerke und/oder Bandlaufwerke oder andere Datenspeichermedien, wie sie im Stand der Technik bekannt sind, ein. In einigen Ausführungsformen können Daten, Programme oder andere Informationen entfernt, zum Beispiel in der „Cloud“ gespeichert werden.
-
Das Trainings-, Validierungs- und Test-ML-Modul 6 schließt Software, Firmware und/oder Hardware und ein ML-Framework zum Entwerfen eines ML-Modells und Durchführen von Training, Validierung und Test des ML-Modells und anschließenden Speichern des ML-Modells für die spätere Verwendung durch Kunden mit Hilfe von Schaltungsentwurfwerkzeugen ein. Angesichts der Merkmale und der Architektur des Modells könnte die Software für die tatsächliche Erzeugung des Modells im Handel erhältliche ML-Frameworks für die ML-Modellerzeugung, wie das vorstehend erwähnte TensorFlow-Softwareprogramm, oder ähnliche Softwareprogramme und zugehörige Bibliotheken verwenden, wie sie im Stand der Technik bekannt sind.
-
In einem Beispiel schließen die Entwurfablaufswerkzeuge 5 mindestens ein Timing-Driven-Werkzeug, wie ein Timing-Driven-Place-and-Route-Werkzeug oder ein statisches Timing-Analysewerkzeug, ein. Die tatsächliche Verzögerung eines gegebenen Elements wird durch das so genannte Wahr-Label dargestellt. In einer beispielhaften Ausführungsform, die in der folgenden Erörterung der Erfindung als ein Beispiel verwendet wird, können die Entwurfablaufswerkzeuge 5 einen SPICE-Deckkonstruktor und einen SPICE-Simulator einschließen, die einen oder mehrere Softwareprogramme einschließen können, die auf dem optionalen Prozessor 7 betrieben werden können. Die Vorgänge der Entwurfablaufswerkzeuge 5 (z. B. der SPICE-Deckkonstruktor und der SPICE-Simulator) werden durch Anweisungen des ERD-Merkmalsextraktors 4 gesteuert.
-
Das IC-Entwurfssystem 20 kann sich in der gleichen physischen Einrichtung wie das IC-Entwurfsverzögerungsverifizierungs-ML-Modell erzeugende System 40 befinden und direkt an die anderen Komponenten des Systems 40 gekoppelt sein, wie durch Pfeil 8 gezeigt. In einem Beispiel befindet sich das IC-Entwurfssystem 20 an einer anderen Stelle als das ML-Modell erzeugenden System 10 und ist über ein Kommunikationssystem 16, das beispielsweise das Internet sein kann und das ein oder mehrere im Stand der Technik allgemein bekannte optische, drahtlose oder drahtgebundene Kommunikationssysteme einschließen kann, mit dem ML-Modell erzeugenden System 10 gekoppelt.
-
In einem Beispiel ist das IC-Entwurfssystem 20 konfiguriert, um Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells 34, Konfigurationsdateien des Netzverzögerungs-ML-Modells 35 und Konfigurationsdateien des Zellenverzögerungs-ML-Modells 36 und ein oder mehrere Softwareprogramme, die einen benutzerdefinierten Merkmalsextraktor 31, ML-Entwurfablaufswerkzeuge 32 und ein Vorhersage-ML-Modul 33 (siehe 2) umfassen, von dem ML-Modell erzeugenden System 10 herunterzuladen und konfiguriert ist, um dann den Entwurf, die Validierung und optional die Programmierung und Herstellung von IC-Vorrichtungen unabhängig von dem ML-Modell erzeugenden System 10 durchzuführen.
-
Das IC-Entwurfssystem 20 von 2 schließt ein Eingangs- und Ausgangsmodul (E/A-Modul) 23 ein, das eine oder mehrere physische Vorrichtungen zum Koppeln des Eingangs und Senden des Ausgangs von dem IC-Entwurfssystem 20 einschließt. Das E/A-Modul 32 schließt den Benutzerentwurf-Eingang 21 ein. Das IC-Entwurfssystem 20 schließt auch Datenspeicher 22, einen Benutzerentwurf-Merkmalsextraktor 31, ML-Entwurfablaufswerkzeuge 32 und Vorhersage-ML-Modul 33 ein.
-
In dem Datenspeicher 22 sind die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells 34, die Konfigurationsdateien des Netzverzögerungs-ML-Modells 35 und die Konfigurationsdateien des Zellenverzögerungs-ML-Modells 36 gespeichert. In einem Beispiel schließt der Datenspeicher 22 einen oder mehrere von Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, Festplattenlaufwerke und/oder Bandlaufwerke oder andere Datenspeichermedien, wie sie im Stand der Technik bekannt sind, ein. In einigen Ausführungsformen können Daten, Programme oder andere Informationen entfernt, zum Beispiel in der „Cloud“ gespeichert werden.
-
Der Benutzerentwurf-Merkmalsextraktor 31 schließt ein oder mehrere Decks oder Dateien ein, die eine entsprechende Netztopologie des eingegebenen Benutzerentwurfs angeben (d. h. die Art und Weise, in der die Komponenten miteinander verbunden sind), so dass es betreibbar ist, um Merkmalswerte aus dem Benutzerentwurf zu extrahieren.
-
In einem Beispiel schließt das Vorhersage-ML-Modul 33 ML-Komponenten ein, die für die Durchführung von ML-Vorgängen erforderlich sind, und schließt keine ML-Software-, Firmware- und/oder Hardwarekomponenten zum Erzeugen eines ML-Modells ein. In diesem Beispiel schließen, da das Timing unter Verwendung von ML-Modellen bestimmt wird, ML-Entwurfablaufswerkzeuge 32 keine umfassende Modellierungssoftware wie SPICE (oder andere rechenintensive IC-Entwurfswerkzeugprogramme, die üblicherweise in Entwurfssystemen nach dem Stand der Technik verwendet werden) ein, wie sie in den Entwurfablaufswerkzeugen 5 von 1 eingeschlossen sein kann.
-
Das IC-Entwurfssystem 20 schließt optional ein spezialisiertes Hardwaremodul ein (z. B. ein spezialisierter konfigurierbarer Beschleuniger, der auf einem FPGA gebildet wird, oder einer dedizierten ASIC), das speziell konfiguriert ist, um einen neuronalen Netzvorgang durchzuführen, und das spezialisierte Hardwaremodul kann im Folgenden auch als „Neural Network-Engine“ 30 bezeichnet werden. Das IC-Entwurfssystem 20 schließt optional auch eine oder mehrere von Anzeige 28, Direktzugriffsspeicher (RAM) 24, Prozessor 25, Maskengenerator 26 und Vorrichtungsprogrammierer 27 ein.
-
Das E/A-Modul 23, der Benutzerentwurf-Eingang 21, der Benutzerentwurf-Merkmalsextraktor 31, die ML-Entwurfablaufswerkzeuge 32, das Vorhersage-ML-Modul 33, die optionale Neural Network-Engine 30, der optionale RAM 24, die optionale Anzeige 28, der optionale Prozessor 25, der optionale Maskengenerator 26 und der optionale Vorrichtungsprogrammierer 27 sind über ein Kommunikations-Subsystem 29 miteinander verbunden, das beispielsweise ein Systembus sein kann. In einer Ausführungsform sind der Benutzerentwurf-Merkmalsextraktor 31, die ML-Entwurfablaufswerkzeuge 32, das Vorhersage-ML-Moduljeweils entsprechende Softwaremodule, deren maschinenlesbare Anweisungen auf dem Datenspeicher 22 gespeichert sind und auf dem optionalen Prozessor 25 ausgeführt werden.
-
3 veranschaulicht ein Verfahren 100 für den IC-Entwurf mit Verzögerungsverifizierung, welches das Erzeugen (101) eines Anstiegsgeschwindigkeits-ML-Modells, eines Netzverzögerungs-ML-Modells und eines Zellenverzögerungs-ML-Modells einschließt. Das Anstiegsgeschwindigkeits-ML-Modell ist ein Prädiktor, in dem alle Parameter berechnet werden, welche die Anstiegsgeschwindigkeit vorhersagen (Anstiegsgeschwindigkeitswerte). Das Netzverzögerungs-ML-Modell ist ein Prädiktor, in dem alle Parameter berechnet werden, welche die Netzverzögerung (Netzverzögerungswerte) vorhersagen. Das Zellenverzögerungs-ML-Modell ist ein Prädiktor, in dem alle Parameter berechnet werden, welche die Zellenverzögerung (Zellenverzögerungswerte) vorhersagen.
-
Die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells, die Konfigurationsdateien des Netzverzögerungs-ML-Modells und die Konfigurationsdateien des Zellenverzögerungs-ML Modells werden gespeichert (102). Die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells schließen die Architektur des Anstiegsgeschwindigkeits-ML-Modells zusammen mit den aus dem Training des Anstiegsgeschwindigkeits-ML-Modells entwickelten Parametern, die weiter unten beschrieben werden, ein und können in der Anstiegsgeschwindigkeitsdatenbank 12 von 1 und im Datenspeicher 22 von 2 als Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells 34 gespeichert werden. Die Konfigurationsdateien des Netzverzögerungs-ML-Modells schließen die Architektur des Netzverzögerungs-ML-Modells zusammen mit den aus dem Training des Netzverzögerungs-ML-Modells entwickelten Parametern ein und können in der Netzverzögerungsdatenbank 13 von 1 und im Datenspeicher 22 von 2 als Konfigurationsdateien des Netzverzögerungs-ML-Modells 35 gespeichert werden. Die Konfigurationsdateien des Zellenverzögerungs-ML Modells schließen die Architektur des Zellenverzögerungs-ML Modells zusammen mit den aus dem Training des Zellenverzögerungs-ML Modells entwickelten Parametern ein und können in der Zellenverzögerungsdatenbank 14 von 1 und im Datenspeicher 22 von 2 als Konfigurationsdateien des Zellenverzögerungs-ML Modells 36 gespeichert werden.
-
Ein Benutzerentwurf wird empfangen (103). In der in 2 gezeigten Ausführungsform ist der Benutzerentwurf-Eingang 21 zum Empfangen des Benutzerentwurfs konfiguriert, das in Form einer oder mehrerer Datendateien vorliegen kann, die einen IC-Entwurf definieren, der auf einem Vorrichtungswafer (durch Herstellen einer Vorrichtung oder Programmieren einer programmierbaren Logikvorrichtung) ausgebildet werden soll. Der empfangene Benutzerentwurf kann im Datenspeicher 22 gespeichert werden. Alternativ kann der Benutzerentwurf von einem Benutzer unter Verwendung von ML-Entwurfablaufswerkzeugen 32 erzeugt werden und der Benutzerentwurf kann in dem Datenspeicher 22 gespeichert werden. In diesem Beispiel werden die Dateien des Benutzerentwurfs aus dem Datenspeicher 22 ausgelesen und am Benutzerentwurf-Merkmalsextraktor 31 empfangen (103).
-
Merkmalswerte werden aus dem Benutzerentwurf für jedes Anstiegsgeschwindigkeitsmerkmal, jedes Netzverzögerungsmerkmal und jedes Zellenverzögerungsmerkmal extrahiert (104), um Anstiegsgeschwindigkeitsmerkmalswerte, Netzverzögerungsmerkmalswerte und Zellenverzögerungsmerkmalswerte des Benutzerentwurfs zu erhalten. In der in 2 gezeigten Ausführungsform ist der Benutzerentwurf-Merkmalsextraktor 31 konfiguriert, um den eingegebenen Benutzerentwurf oder den unter Verwendung der ML-Entwurfablaufswerkzeuge 32 erstellten Benutzerentwurf zu empfangen und Anstiegsgeschwindigkeitsmerkmalswerte, Netzverzögerungsmerkmalswerte und Zellenverzögerungsmerkmalswerte aus dem Benutzerentwurf zu extrahieren. Alternativ ist der Benutzerentwurf-Merkmalsextraktor 3 1 zum Extrahieren von Merkmalswerte betreibbar, indem Anweisungen für ML-Entwurfablaufswerkzeuge 32 bereitgestellt werden, so dass als Reaktion auf das Empfangen der Anweisungen von dem Benutzerentwurf-Merkmalsextraktor 31 ML-Entwurfablaufswerkzeuge 32 zum Durchführen der Extraktion betreibbar sind.
-
Die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells werden (in den RAM oder eine Neural Network-Engine) geladen, um einen Anstiegsgeschwindigkeitsinferenzkern zu bilden (105); Vorgänge des Anstiegsgeschwindigkeitsinferenzkerns werden durchgeführt (106), wobei die extrahierten Anstiegsgeschwindigkeitsmerkmalswerte als Eingang verwendet werden, um vorhergesagte Anstiegsgeschwindigkeitswerte für jedes Signal in dem Benutzerentwurf zu berechnen; und die berechneten vorhergesagten Anstiegsgeschwindigkeitswerte werden optional an die ML-Entwurfablaufswerkzeuge gesendet (107). In einem Beispiel ist das Vorhersage-ML-Modul 33 konfiguriert, um die Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells 34 in den RAM 24 oder die Neural Network-Engine 30 zu laden, um einen Anstiegsgeschwindigkeitsinferenzkern 37 zu bilden, Vorgänge des Anstiegsgeschwindigkeitsinferenzkerns 37 unter Verwendung der extrahierten Anstiegsgeschwindigkeitsmerkmalswerte als Eingang durchzuführen, um vorhergesagte Anstiegsgeschwindigkeitswerte zu berechnen; und die vorhergesagten Anstiegsgeschwindigkeitswerte an ML-Entwurfablaufswerkzeuge 32 zu senden.
-
4 veranschaulicht einen beispielhaften Inferenzkern 37, der Eingangsneuronen 41, Zeilen verborgener Neuronen 42-43 und das Ausgangsneuron 44 einschließt, die einen vorhergesagten Anstiegsgeschwindigkeitswert berechnen. In diesem Beispiel schließen die Merkmale (dargestellt durch Eingangsneuronen 41) die Anzahl der aktiven Vorrichtungen (NAD) zwischen Quelle und Senke (in einem FPGA können dies Multiplexer oder einfache Schalter sein), den Gesamtwiderstand (R) zwischen Quelle und Senke und die Kapazität (Css) zwischen Quelle und Senke, die Gesamtkapazität (CNET) und den Fanout (FAN) des gesamten Netzes, das die Anstiegsgeschwindigkeit an seinem Ausgang erzeugt, ein.
-
Zurückkehrend zu 2 werden die Konfigurationsdateien des Netzverzögerungs-ML-Modells (in den RAM oder eine Neural Network-Engine) geladen, um einen Netzverzögerungsinferenzkern zu bilden (108); Vorgänge des Netzverzögerungsinferenzkerns werden durchgeführt (109), wobei die extrahierten Netzverzögerungsmerkmalswerte als Eingang verwendet werden, um vorhergesagte Netzverzögerungswerte für jedes Netz in dem Benutzerentwurf zu berechnen; und die berechneten vorhergesagten Netzverzögerungswerte werden optional an die ML-Entwurfablaufswerkzeuge gesendet (110). In einem Beispiel ist das Vorhersage-ML-Modul 33 konfiguriert, um die Konfigurationsdateien des Netzverzögerungs-ML-Modells 35 in den RAM 24 oder die Neural Network-Engine 30 zu laden, um einen Netzverzögerungsinferenzkern 38 zu bilden, Vorgänge des Netzverzögerungsinferenzkerns 38 unter Verwendung der extrahierten Netzverzögerungsmerkmalswerte als Eingang durchzuführen, um vorhergesagte Netzverzögerungswerte zu berechnen; und die berechneten vorhergesagten Netzverzögerungswerte an ML-Entwurfablaufswerkzeuge 32 zu senden.
-
5 veranschaulicht einen beispielhaften Inferenzkern 38, der Eingangsneuronen 51, Zeilen verborgener Neuronen 52-53 und das Ausgangsneuron 54 einschließt, die einen vorhergesagten Netzverzögerungswert erzeugen. In diesem Beispiel schließen die Merkmale (dargestellt durch Eingangsneuronen 51) NAD, R, CSS, CNET, FAN, die Eingangsanstiegsgeschwindigkeit am Eingang des Netztreibers (NDISR) und Spurarten zwischen der Quelle und der Senke des Netzes (SPUR) ein. Im Beispiel eines FPGA können die Spurarten durch Puffernamen identifiziert werden, der die Kombination von Spurpuffer, Spurlänge und Multiplexer auf der Spur erfasst. In ASICs können diese Eigenschaften anstelle der Spurart explizit einzeln aufgelistet werden. Spuren können kurze, mittlere oder lange Leitungen mit zusätzlichen Unterarten sein, um Spuren unterschiedlicher Länge zu erfassen.
-
Zurückkehrend zu 2 werden die Konfigurationsdateien des Netzverzögerungs-ML-Modells (in den RAM oder eine Neural Network-Engine) geladen, um einen Zellenverzögerungsinferenzkern zu bilden (111); Vorgänge des Zellenverzögerungsinferenzkerns werden durchgeführt (112), wobei die extrahierten Zellenverzögerungsmerkmalswerte als Eingang verwendet werden, um vorhergesagte Zellenverzögerungswerte für jedes Zelle in dem Benutzerentwurf zu berechnen; und die berechneten Zellenverzögerungswerte werden optional an die ML-Entwurfablaufswerkzeuge gesendet (113). In einem Beispiel ist das Vorhersage-ML-Modul 33 konfiguriert, um die Konfigurationsdateien des Zellenverzögerungs-ML-Modells 36 in den RAM 24 oder die Neural Network-Engine 30 zu laden, um einen Zellenverzögerungsinferenzkern 39 zu bilden, Vorgänge des Zellenverzögerungsinferenzkerns 39 unter Verwendung der extrahierten Zellenverzögerungsmerkmalswerte als Eingang durchzuführen, um vorhergesagte Zellenverzögerungswerte zu berechnen; und die berechneten vorhergesagten Zellenverzögerungswerte an ML-Entwurfablaufswerkzeuge 32 zu senden.
-
6 veranschaulicht einen beispielhaften Zellenverzögerungsinferenzkern 39, der Eingangsneuronen 61, Zeilen verborgener Neuronen 62-63 und das Ausgangsneuron 64 einschließt, die einen vorhergesagten Zellenverzögerungswert erzeugen. Zellenverzögerungsmerkmale schließen den Zelleneingangspin (ZELLENEINGANGSPIN), den Zustand der verbleibenden Eingänge (ANDERER EINGANGSPINZUSTAND), bei dem es sich um den Zustand aller Eingänge abzüglich des an der Verzögerungsberechnung beteiligten handeln kann, den Zellenausgangspin (ZELLENAUSGANSPIN), den Zustand der verbleibenden Ausgänge (ANDERER AUSGANGSPINZUSTAND), bei dem es sich um den Zustand aller Ausgänge abzüglich des an der Verzögerungsberechnung beteiligten handelt, die Eingangsanstiegsgeschwindigkeit am Zelleneingang (EINGANGSANSTIEGSGESCHWINDIGKEIT) und die Ausgangslast am Zellenausgang (AUSGANGSLAST) ein. Die Zeitverzögerung von jedem Zelleneingang zu einem bestimmten Zellenausgang ist unterschiedlich, so dass die Merkmalsspezifikationen einschließen, welche von einer Vielzahl von Eingängen verwendet wird, sowie welche von einer Vielzahl von Ausgängen (falls mehr als einer) verwendet wird. Außerdem können sich die Logikzustände anderer Eingänge zu der Zelle auf die Eingang-zu-Ausgang-Timing-Verzögerung auswirken und diese werden ebenfalls als Zellenmerkmale angegeben.
-
In einer Ausführungsform werden die Schritte 104-113 von 3 als Reaktion auf das Empfangen einer Anweisung von ML-Entwurfablaufswerkzeuge 32 durchgeführt (z. B. jedes Mal, wenn ein neuer Benutzerentwurf bewertet werden soll) und werden von dem IC-Entwurfssystem 20 ohne Benutzereingriff automatisch durchgeführt. Als Reaktion auf die Anweisung ist das Vorhersage-ML-Modul 33 betreibbar, um die Konfigurationsdateien, die zum Durchführen der Anweisung erforderlich sind (Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells 34, Konfigurationsdateien des Netzverzögerungs-ML-Modells 35 oder Konfigurationsdateien des Zellenverzögerungs-ML-Modells 36) in den RAM 24 oder die Neural Network-Engine 30 zu laden, um den Anstiegsgeschwindigkeitsinferenzkern 37, den Netzverzögerungsinferenzkern 38 oder den Zellenverzögerungsinferenzkern 39 zu bilden, und um den erforderlichen neuronalen Netzbetrieb durchzuführen. Da die Ergebnisse der einzelnen Vorgänge durch den jeweiligen Inferenzkern 37-39 ausgegeben werden, ist das Vorhersage-ML-Modul 33 betreibbar, um den Ausgang mit den ML-Entwurfablaufswerkzeugen 32 zu koppeln und die Ergebnisse der einzelnen Vorgänge an die ML-Entwurfablaufswerkzeuge 32 zu senden.
-
In einem Beispiel ist der Benutzerentwurf-Merkmalsextraktor 31 während der Entwurfsaktivität durch einen Endbenutzer betreibbar, um Daten und Anweisungen zu ML-Entwurfablaufswerkzeugen 32 zu senden und Antworten von ihnen zu empfangen, um so Merkmalswerte zu extrahieren und das Vorhersage-ML-Modul 33 unter Verwendung der ML-Entwurfablaufswerkzeuge 32 anzuwenden.
-
Der Benutzerentwurf wird innerhalb der ML-Entwurfablaufswerkzeuge 32 iteriert (114), bis ein endgültiger Benutzerentwurf erhalten wird, der frei von Timing-Verletzungen ist. In einem Beispiel iterieren die ML-Entwurfablaufswerkzeuge 32 den Benutzerentwurf (z. B. unter Verwendung eines oder mehrerer von einem Synthesewerkzeug, einem Platzierwerkzeug, einem Routerwerkzeug und einem Werkzeug für die Statische Timing-Analyse (STA-Werkzeug)) und berechneten vorhergesagte Anstiegsgeschwindigkeitswerte, vorhergesagte Netzverzögerungswerte und vorhergesagte Zellenverzögerungswerte, bis der Benutzerentwurf der Ziel-IC frei von Timing-Verletzungen ist, um den endgültigen Benutzerentwurf zu identifizieren.
-
In einem Beispiel schließt Schritt 114 das Bestimmen, ob der Benutzerentwurf eine Timing-Verletzung aufweist, ein; und wenn der Entwurf eine Timing-Verletzung aufweist, ist eines oder sind mehrere von dem Synthesewerkzeug, dem Platzierwerkzeug, dem Routerwerkzeug und dem STA-Werkzeug der Entwurfablaufswerkzeuge 32 betreibbar, um den Entwurf in automatisierter Weise ohne Benutzereingriff zu iterieren, um den Entwurf wiederholt zu ändern (z. B. durch Ändern der Synthese einer oder mehrerer Komponenten, der Platzierung einer oder mehrerer Komponenten, des Routings zwischen Komponenten und/oder des statischen Timings einer oder mehrerer Komponenten) und die Schritte 104-113 (die der Benutzerentwurf-Merkmalsextraktor 31 und das Vorhersage-ML-Modul 33 nach Bedarf anwenden) zu wiederholen, bis ein endgültiger Benutzerentwurf ohne Timing-Verletzungen erhalten wird.
-
Das Verfahren schließt optional das Programmieren (115) des endgültigen Benutzerentwurfs in eine Ziel-FPGA-IC-Vorrichtung ein. In einem Beispiel führt der Vorrichtungsprogrammierer 27 die Programmierung des tatsächlichen Siliziums, das in Ausführungsformen der Erfindung innerhalb des Endbenutzerprodukts verwendet werden soll, durch, wobei der endgültige Benutzerentwurf in einer benutzerprogrammierbaren integrierten Schaltung, wie einem FPGA, realisiert wird. Die FPGA-Vorrichtungsprogrammierer sind sowohl von den FPGA-Herstellern als auch von zahlreichen Drittanbietern erhältlich. Zur Durchführung der Programmierung werden eine oder mehrere gepackte FPGA-Vorrichtungen in Vorrichtungsbuchsen platziert und geeignete Daten und Spannungen werden an die gepackten Vorrichtungen angelegt, um den Entwurf als tatsächliche Schaltungen in der gepackten FPGA-Vorrichtung zu implementieren.
-
Das Verfahren schließt optional das Erzeugen einer Vielzahl von Fotomasken (116) ein, die dem endgültigen Benutzerentwurf entsprechen. In einem Beispiel ist der Maskengenerator 26 betreibbar, um die Fotomasken zu erzeugen. Insbesondere ist der optionale Maskengenerator 26 eine Vorrichtung, welche die tatsächliche Erzeugung der geometrischen Muster für fotolithografische Masken durchführt, die verwendet werden, um in Ausführungsformen der Erfindung, wo der Entwurf in einer maskendefinierten integrierten Schaltung realisiert wird, das tatsächliche zu erzeugende Silizium zu fertigen. Zahlreiche Anbieter bieten integrierte Hardwaresysteme an, mit denen sich Entwurfsdaten in physische geometrische Muster umwandeln lassen und die Muster beispielsweise auf verchromte fotolithografische Masken übertragen werden können.
-
7 veranschaulicht ein beispielhaftes Verfahren (200) zum Durchführen von Schritt 101 von 3. Das Verfahren 200 schließt das Empfangen des Eingangs (201), der Merkmale eines IC-Entwurfs und der Architekturen von jedem des Anstiegsgeschwindigkeits-ML-Modells, des Netzverzögerungs-ML-Modells und des Zellenverzögerungs-ML-Modells angibt, ein. In der in 1 gezeigten Ausführungsform ist der Merkmalseingang 2 konfiguriert, um den Eingang zu empfangen, der Merkmale (z. B. in Form einer oder mehrerer elektronischer Dateien) angibt, die im Datenspeicher 11 gespeichert sein können oder direkt mit dem ERD-Merkmalsextraktor 4 gekoppelt sein können. Der Eingang, der die Architektur des Anstiegsgeschwindigkeits-ML-Modells, des Netzverzögerungs-ML-Modells und des Zellenverzögerungs-ML-Modells angibt, kann über das E/A-Modul 1 empfangen werden und kann Parameter, Hyperparameter usw. einschließen und kann im Datenspeicher 11 gespeichert sein oder direkt mit dem Trainings-, Validierungs- und Test-ML-Modul 6 gekoppelt sein.
-
ERD-Beispiele werden als Eingang empfangen (202). In der in 1 gezeigten Ausführungsform ist der ERD-Beispieleingang 3 konfiguriert, um ERD-Beispiele zu empfangen (aus bekannten Entwürfen mit gültigem Timing) und entweder die empfangenen ERD-Beispiele im Datenspeicher 11 zu speichern oder die empfangenen ERD-Beispiele direkt mit dem ERD-Merkmalsextraktor 4 zu koppeln.
-
Ein Anstiegsgeschwindigkeits-ML-Modell wird erzeugt (203), indem ERD-Anstiegsgeschwindigkeitsmerkmalswerte aus den ERD-Beispielen extrahiert werden, ERD-Anstiegsgeschwindigkeit-Wahr-Labels berechnet werden, die den extrahierten ERD-Anstiegsgeschwindigkeitsmerkmalswerten entsprechen, und Training, Validierung und Tests des erzeugten Anstiegsgeschwindigkeits-ML-Modells unter Verwendung der extrahierten ERD-Anstiegsgeschwindigkeitsmerkmalswerte und der entsprechenden ERD-Anstiegsgeschwindigkeit-Wahr-Labels durchgeführt werden, um das Anstiegsgeschwindigkeits-ML-Modell zu erzeugen. Optional werden, wie weiter unten beschrieben, die extrahierten ERD-Anstiegsgeschwindigkeitsmerkmalswerte, vorzugsweise in Kombination mit den Anstiegsgeschwindigkeit-Wahr-Werten, in Trainings-, Validierungs- und Testdatensätze unterteilt. Ferner wird optional das Training, die Validierung und das Testen des erzeugten Anstiegsgeschwindigkeits-ML-Modells auf dem jeweiligen Trainings-, Validierungs- und Testdatensatz durchgeführt. In einer Ausführungsform wird das Training, die Validierung und das Testen des erzeugten Anstiegsgeschwindigkeits-ML-Modells auf dem jeweiligen Trainings-, Validierungs- und Testdatensatz unter Verwendung eines handelsüblichen Programms, wie dem vorstehend erwähnten TensorFlow-Softwareprogramm, durchgeführt. Ferner wird optional das Training unter Verwendung eines Random-Forest-Algorithmus durchgeführt.
-
Ein Netzverzögerungs-ML-Modell wird erzeugt (204), indem ERD-Netzverzögerungsmerkmalswerten aus den ERD-Beispielen extrahiert werden, ERD-Netzverzögerung-Wahr-Labels berechnet werden, die den extrahierten ERD-Netzverzögerungsmerkmalswerten entsprechen, und Training, Validierung und Tests des erzeugten Netzverzögerungs-ML-Modells unter Verwendung der extrahierten ERD-Netzverzögerungsmerkmalswerte und der entsprechenden ERD-Netzverzögerung-Wahr-Labels durchgeführt werden, um das trainierte Netzverzögerungs-ML-Modell zu erzeugen. Optional werden, wie weiter unten beschrieben, die extrahierten ERD-Netzverzögerungsmerkmalswerte, vorzugsweise in Kombination mit den Netzverzögerung-Wahr-Werten, in Trainings-, Validierungs- und Testdatensätze unterteilt. Ferner wird optional das Training, die Validierung und das Testen des erzeugten Netzverzögerungs-ML-Modells an dem jeweiligen Trainings-, Validierungs- und Testdatensatz unter Verwendung eines handelsüblichen Softwareprogramms, wie dem vorstehend erwähnten TensorFlow-Softwareprogramm, durchgeführt. Ferner wird optional das Training unter Verwendung eines Random-Forest-Algorithmus durchgeführt.
-
Ein Zellenverzögerungs-ML-Modell wird erzeugt (205), indem ERD-Zellenverzögerungsmerkmalswerten aus den ERD-Beispielen extrahiert werden, ERD-Zellenverzögerung-Wahr-Labels berechnet werden, die den extrahierten ERD-Zellenverzögerungsmerkmalswerten entsprechen, und Training, Validierung und Tests des erzeugten Zellenverzögerungs-ML-Modells unter Verwendung der extrahierten ERD-Zellenverzögerungsmerkmalswerte und der entsprechenden ERD-Zellenverzögerung-Wahr-Labels durchgeführt werden, um das Zellenverzögerungs-ML-Modell zu erzeugen. Optional werden, wie weiter unten beschrieben, die extrahierten ERD-Zellenverzögerungsmerkmalswerte, vorzugsweise in Kombination mit den Zellenverzögerung-Wahr-Werten, unter Verwendung eines handelsüblichen Softwareprogramms, wie dem vorstehend erwähnten TensorFlow-Softwareprogramm, in Trainings-, Validierungs- und Testdatensätze unterteilt. Ferner wird optional das Training, die Validierung und das Testen des erzeugten Zellenverzögerungs-ML-Modells an dem jeweiligen Trainings-, Validierungs- und Testdatensatz durchgeführt. Ferner wird optional das Training unter Verwendung eines Random-Forest-Algorithmus durchgeführt.
-
In einem Beispiel wird für das Training des Anstiegsgeschwindigkeits-ML-Modells, das Training des Netzverzögerungs-ML-Modells und das Training des Zellenverzögerungs-ML-Modells ein Random-Forest-Trainingsalgorithmus verwendet, der über das Softwareprogramm (z. B. das TensorFlow-Programm) angewendet wird.
-
In einem Beispiel empfängt der ERD-Merkmalsextraktor 4 den Eingang, der die Merkmale angibt, sendet Daten und Anweisungen an die Entwurfablaufswerkzeuge 5 und empfängt Antworten von diesen, um so ein Deck (z. B. ein SPICE-Deck) unter Verwendung der Entwurfablaufswerkzeuge 5 (z. B. eines SPICE-Deckkonstruktors) zu bilden, das über Werte für die Entwurfsmerkmale verfügt, die durch das bestimmte ML-Modell (z. B. die Netzspuren, Puffer und Schalter) sowie die entsprechende Netztopologie (d. h. die Art und Weise, in der die Komponenten miteinander verbunden sind) verwendet werden sollen. Der ERD-Merkmalsextraktor 4 ist betreibbar, um die empfangenen ERD-Beispiele zu lesen und ERD-Merkmalswerte zu extrahieren und bildet eine Instanz der Anstiegsgeschwindigkeitsdatenbank 12, in der die extrahierten Werte für ERD-Anstiegsgeschwindigkeitsmerkmale (d. h. ERD-Anstiegsgeschwindigkeitsmerkmalswerte) gespeichert sind, eine Instanz der Netzverzögerungsdatenbank 13, in der die extrahierten Werte für die ERD-Netzverzögerungsmerkmale (d. h. ERD-Netzverzögerungsmerkmalswerte) gespeichert sind, und eine Instanz der Zellenverzögerungsdatenbank 14, in der die extrahierten Werte für ERD-Zellenverzögerungsmerkmale (d. h. ERD-Zellenverzögerungsmerkmalswerte) gespeichert sind. Der ERD-Merkmalsextraktor 4 ist dann betreibbar, um Daten und Anweisungen an die Entwurfablaufwerkzeuge 5 zu senden und Antworten von diesen zu empfangen, wobei die Entwurfablaufwerkzeuge 5 dann betreibbar sind, um eine SPICE-Simulation oder ein anderes Schaltungssimulatorprogramm auszuführen, und ERD-Wahr-Labels für jede Anstiegsgeschwindigkeit (Anstiegsgeschwindigkeit-Wahr-Labels), jede Netzverzögerung (Netzverzögerung-Wahr-Labels) und jede Zellenverzögerung (Zellenverzögerung-Wahr-Labels) in den ERD-Beispielen zu berechnen. Die Entwurfablaufwerkzeuge 5 speichern die berechneten ERD-Wahr-Labels (z. B. durch Verknüpfen jedes berechneten Wahr-Labels mit den entsprechenden Merkmalswerten, die verwendet wurden, um die Wahr-Labels zu erzeugen, um einen Datensatz zu bilden, und Speichern von Anstiegsgeschwindigkeitsdatensätzen in der jeweiligen Instanz der Anstiegsgeschwindigkeitsdatenbank 12, Speichern von Netzverzögerungsdatensätzen in der jeweiligen Instanz der Netzverzögerungsdatenbank 13 und Speichern von Zellenverzögerungsdatensätzen in der jeweiligen Instanz der Zellenverzögerungsdatenbank 14.
-
Das ML-Trainings-, Validierungs- und Testmodul 6 unterteilt die Anstiegsgeschwindigkeitsdatensätze (welche die berechneten ERD-Anstiegsgeschwindigkeit-Wahr-Labels und die extrahierten ERD-Anstiegsgeschwindigkeitsmerkmalswerten einschließen), um einen Anstiegsgeschwindigkeitstrainingsdatensatz, einen Anstiegsgeschwindigkeitsvalidierungsdatensatz und einen Anstiegsgeschwindigkeitstestdatensatz zu erstellen und speichert den Anstiegsgeschwindigkeitstrainingsdatensatz, den Anstiegsgeschwindigkeitsvalidierungsdatensatz und den Anstiegsgeschwindigkeitstestdatensatz in der jeweiligen Instanz der Anstiegsgeschwindigkeitsdatenbank 12; unterteilt die Netzverzögerungsdatensätzen (welche die berechneten ERD-Netzverzögerung-Wahr-Labels und die extrahierten ERD-Netzverzögerungsmerkmalswerte einschließen), um einen Netzverzögerungstrainingsdatensatz, einen Netzverzögerungsvalidierungsdatensatz und einen Netzverzögerungstestdatensatz zu erstellen und speichert den Netzverzögerungstrainingsdatensatz, den Netzverzögerungsvalidierungsdatensatz und den Netzverzögerungstestdatensatz in der jeweiligen Instanz der Netzverzögerungsdatenbank 13; und unterteilt die Zellenverzögerungsdatensätze (welche die berechneten ERD-Zellenverzögerung-Wahr-Labels und die extrahierten ERD-Zellenverzögerungsmerkmalswerte einschließen), um einen Zellenverzögerungstrainingsdatensatz, einen Zellenverzögerungsvalidierungsdatensatz und einen Zellenverzögerungstestdatensatz zu erstellen und speichert den Zellenverzögerungstrainingsdatensatz, den Zellenverzögerungsvalidierungsdatensatz und den Zellenverzögerungstestdatensatz in der jeweiligen Instanz der Zellenverzögerungsdatenbank 14. In einem Beispiel wird eine Datenmatrix, die Datensätze enthält, zur Verarbeitung in einen Datenrahmen eingelesen und nach dem Zufallsprinzip aufgeteilt, wobei 20 % in einen Trainingsdatensatz, 20 % in einen Validierungsdatensatz und der Rest in einen Testdatensatz einfließen.
-
Das Trainings-, Validierungs- und Test-ML-Modul 6 erzeugt ein Anstiegsgeschwindigkeits-ML-Modell unter Verwendung der empfangenen Merkmale und der Architektur des Anstiegsgeschwindigkeits-ML-Modells, trainiert das Anstiegsgeschwindigkeits-ML-Modell unter Verwendung des Trainingsdatensatzes und speichert Konfigurationsdateien des trainierten ML-Modells (Konfigurationsdateien des Anstiegsgeschwindigkeits-ML-Modells) in der jeweiligen Instanz der Anstiegsgeschwindigkeitsdatenbank 12; erzeugt ein Netzverzögerungs-ML-Modell unter Verwendung der empfangenen Merkmale und der Architektur des Netzverzögerungs-ML-Modells, trainiert das Netzverzögerungs-ML-Modell unter Verwendung des Netzverzögerungstrainingsdatensatzes und speichert Konfigurationsdateien des trainierten ML-Modells (Konfigurationsdateien des Netzverzögerungs-ML-Modells) in der jeweiligen Instanz der Netzverzögerungsdatenbank 13; und erzeugt ein Zellenverzögerungs-ML-Modell unter Verwendung der empfangenen Merkmale und der Architektur des Zellenverzögerungs-ML-Modells, trainiert das Zellenverzögerungs-ML-Modell unter Verwendung des Zellenverzögerungstrainingsdatensatzes und speichert Konfigurationsdateien des trainierten Zellenverzögerungs-ML-Modells (Konfigurationsdateien des Zellenverzögerungs-ML-Modells) in der jeweiligen Instanz der Zellenverzögerungsdatenbank 14. Während des Trainings werden verschiedene Konfigurationsparametersätze (auch als Hyperparameter bekannt) ausgewertet, und der Hyperparametersatz, der das beste Verhältnis zwischen Trainingszeit und Genauigkeit des ML-Modells bereitstellt, wird zum Trainieren des Netzverzögerungs-ML-Modells, des Zellenverzögerungs-ML-Modells und des Anstiegsgeschwindigkeits-ML-Modells ausgewählt.
-
Das Trainings-, Validierungs- und Test-ML-Modul 6 validiert das trainierte Anstiegsgeschwindigkeits-ML-Modell unter Verwendung des Anstiegsgeschwindigkeitsvalidierungsdatensatzes, validiert das trainierte Netzverzögerungs-ML-Modell unter Verwendung des Netzverzögerungsvalidierungsdatensatzes und validiert das trainierte Zellenverzögerungs-ML-Modell unter Verwendung des Zellenverzögerungsvalidierungsdatensatzes.
-
8 veranschaulicht einen beispielhaften Trainings-, Validierungs- und Testprozess (300), der das zum ersten Mal Durchführen des Trainings und der Validierung des ML-Modells (301) einschließt, um ein erstmalig validiertes ML-Modell (ein erstmalig validiertes Anstiegsgeschwindigkeits-ML-Modell, ein erstmalig validiertes Netzverzögerungs-ML-Modell oder ein erstmalig validiertes Zellenverzögerungs-ML-Modell) zu identifizieren. In einem Beispiel schließt die erstmalige Validierung des trainierten ML-Modells eine Merkmalsabfallempfindlichkeitsanalyse und eine Entfernung unnötiger Merkmale aus dem erstmalig validierten ML-Modell ein, um Überanpassung zu vermeiden (wobei das erstmalig validierte ML-Modell möglicherweise nicht in der Lage ist, das Rauschen in den Daten genau herauszufiltern), wobei die Merkmalsabfallempfindlichkeitsanalyse genügend Merkmale beibehält (Anstiegsgeschwindigkeitsmerkmale, Netzverzögerungsmerkmale und respektive Zellenverzögerungsmerkmale), damit das erstmalig validierte ML-Modell nicht über einen minimalen Wert der Genauigkeit hinaus herabgesetzt wird.
-
Das Verfahren 300 schließt das Bestimmen, ob das erstmalig validierte ML-Modell vorbestimmte Kriterien erfüllt (302), ein. In einem Beispiel ist das vorbestimmte Kriterium eine Fehlermessung. In dieser Ausführungsform wird der Fehler in jedem ML-Modell unter Verwendung einer Analyse der Wurzel der mittleren Fehlerquadratsumme (Root Mean Square Error, RMSE) oder des R-Quadrats auf dem Testdatensatz ermittelt. Der ermittelte Fehler wird mit einem gespeicherten Fehlerschwellenwert (z. B. im Datenspeicher 11 gespeichert) verglichen. Wenn der Fehler größer als der Schwellenwert ist, schlägt die Validierung des ML-Modells fehl. In einem Beispiel wird der Fehlerschwellenwert so gewählt, dass er ungefähr gleich dem Fehler zwischen den Entwurfablaufswerkzeuge 5 und den Siliziummessungen einer IC-Vorrichtung ist, die unter Verwendung der Entwurfablaufswerkzeuge 5 gebildet wird, der zum Beispiel 5 % betragen kann. In einer beispielhaften Ausführungsform werden die Schritte 301-302 durch das Trainings-, Validierungs- und Test-ML-Modul 6 des ML-Modell erzeugenden Systems 10 durchgeführt.
-
Wenn das erstmalig validierte ML-Modell die vorbestimmten Kriterien, der Linie 321 folgend, erfüllt, endet der Validierungsprozess und das Training, das Trainings-, Validierungs- und Test-ML-Modul 6 geht zum Testen (310) des erstmalig validierten ML-Modells über.
-
Das Trainings-, Validierungs- und Test-ML-Modul 6 ist in der Lage zu bestimmen (303), ob das fehlgeschlagene ML-Modell zum ersten Mal fehlgeschlagen ist (303). Wenn das fehlgeschlagene ML-Modell zum ersten Mal fehlgeschlagen ist, werden Werte für ein zusätzliches Merkmal für das erstmalig fehlgeschlagene ML-Modell extrahiert (304) (z. B. weist das Trainings-, Validierungs- und Test-ML-Modul 6 den ERD-Merkmalsextraktor 4 und/oder die Entwurfablaufswerkzeuge 5 an, die Extraktion durchzuführen) und werden gespeichert (305). Das Trainings-, Validierungs- und Test-ML-Modul 6 aktualisiert (306) das erstmalig fehlgeschlagene ML-Modell, um das zusätzliche Merkmal zu berücksichtigen und speichert optional das aktualisierte erstmalig fehlgeschlagene ML-Modell im Datenspeicher 11. Das Trainings-, Validierungs- und Test-ML-Modul 6 trainiert dann erneut das erstmalig fehlgeschlagene ML-Modell (307) und validiert erneut (308) das neu trainierte, aktualisierte erstmalig fehlgeschlagene ML-Modell und speichert das erneut validierte erstmalig fehlgeschlagene ML-Modell im Datenspeicher 11. Wenn das erneut validierte erstmalig fehlgeschlagene ML-Modell die vorbestimmten Kriterien nicht erfüllt (309), kehrt der Prozess zu Schritt 303 zurück. Wenn das erneut validierte erstmalig fehlgeschlagene ML-Modell die vorbestimmten Kriterien erfüllt (309), endet der Validierungsprozess und der Prozess fährt mit dem Testen des ML-Modells (310) fort.
-
Wenn das ML-Modell mehr als einmal fehlgeschlagen ist (303), fügt das Trainings-, Validierungs- und Test-ML-Modul 6 dem Trainingsdatensatz des nochmals fehlgeschlagenen ML-Modells zusätzliche Trainingsdaten aus neuen Sätzen von ERD-Beispielen hinzu (311), um einen aktualisierten Trainingsdatensatz zu erzeugen und speichert den aktualisierten Trainingsdatensatz optional. Das Trainings-, Validierungs- und Test-ML-Modul 6 trainiert das nochmals fehlgeschlagene ML-Modell unter Verwendung des aktualisierten Trainingsdatensatzes erneut (312), speichert (313) das erneut trainierte nochmals fehlgeschlagene ML-Modell; und validiert das nochmals fehlgeschlagene ML-Modell erneut (314) und speichert optional das erneut validierte nochmals fehlgeschlagene ML-Modell. Wenn das erneut validierte nochmals fehlgeschlagene ML-Modell die vorbestimmten Kriterien nicht erfüllt (309), wird der Prozess der Schritte 303 und 311-314 wiederholt (d. h. bei jedem Durchgang durch die Bezugsnummer 311 werden zusätzliche Trainingsdaten hinzugefügt) bis die vorbestimmten Kriterien in Schritt 309 erfüllt werden. Wenn das erneut validierte nochmals fehlgeschlagene ML-Modell die vorbestimmten Kriterien erfüllt (309), endet der Validierungsprozess und das Trainings-, Validierungs- und Test-ML-Modul 6 geht zum Testen (310) des erneut validierten nochmals fehlgeschlagenen ML-Modells über.
-
Das Trainings-, Validierungs- und Test-ML-Modul 6 testet (310) das trainierte und validierte Anstiegsgeschwindigkeits-ML-Modell unter Verwendung des Anstiegsgeschwindigkeitstestdatensatzes, testet das trainierte und validierte Netzverzögerungs-ML-Modell unter Verwendung des Netzverzögerungstestdatensatzes und testet das trainierte und validierte Zellenverzögerungs-ML-Modell unter Verwendung des Zellenverzögerungstestdatensatzes. In einem Beispiel wird bei dem Test eine vorbestimmte Bewertung für jedes ML-Modell ermittelt, und jedes ML-Modell wird getestet, um eine Bewertung für das jeweilige ML-Modell zu ermitteln. Das ML-Modell wird nur verwendet, wenn die Bewertung des bestimmten ML-Modells die vorbestimmte Bewertung erfüllt.
-
Wenn die Validierung und optional das Testen eines ML-Modells zur Erzeugung eines neuen ML-Modells führt, wird das neue ML-Modell gespeichert (z. B. durch Überschreiben der Konfigurationsdateien für das jeweilige ML-Modell), so dass Konfigurationsdateien für das endgültige Anstiegsgeschwindigkeits-ML-Modell in einer Instanz der Anstiegsgeschwindigkeitsdatenbank 12 gespeichert werden; die Konfigurationsdateien für das endgültige Netzverzögerungs-ML-Modell in einer Instanz der Netzverzögerungsdatenbank 13 gespeichert werden; und die Konfigurationsdateien für das endgültige Zellenverzögerungs-ML-Modell in einer Instanz der Zellenverzögerungsdatenbank 14 gespeichert werden.
-
Wenngleich Ausführungsformen und Anwendungen dieser Erfindung gezeigt und beschrieben wurden, ist es für den Fachmann ersichtlich, dass viel weitere Modifikationen als die vorstehend erwähnten möglich sind, ohne von den hierin enthaltenen erfindungsgemäßen Konzepten abzuweichen. Die Erfindung darf daher außer im Sinne der beiliegenden Ansprüche nicht eingeschränkt werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-