-
Gebiet der Erfindung
-
Die vorliegende Offenbarung bezieht sich auf Verfahren und Systeme für den Entwurf von analogen Schaltungen und insbesondere auf Verfahren und Systeme zur Automatisierung des Entwurfsprozesses für analoge Schaltungen.
-
Hintergrund
-
Analoge Komponenten verursachen die meisten Chipproduktionstestfehler und bis zu 95 % der Ausfälle im Feld. Während der Schaltungsentwurf für digitale Schaltungen in jüngster Zeit zu einem gewissen Grad automatisiert wurde, hat sich die Automatisierung des analogen Schaltungsentwurfs als problematisch erwiesen, nicht zuletzt z.B. wegen parasitärer Effekte. Herkömmliche Ansätze für den Entwurf analoger Schaltungen beinhalten bestmögliche Schätzungen oder die von Ingenieurteams auf der Basis ihres Vorwissens und ihrer Erfahrung manuell durchgeführte Schutzüberdimensionierung von Spezifikationen, was häufig dazu führt, dass die Schaltungen „over-engineered“ und ineffizient oder fehleranfällig sind. Es besteht daher der Wunsch, ein effizienteres und zuverlässigeres Verfahren für die Entwurf analoger Schaltungen zu schaffen.
-
Zusammenfassung der Erfindung
-
Aspekte der Erfindung sind in den unabhängigen Ansprüchen dargelegt, und optionale Merkmale sind in den abhängigen Ansprüchen dargelegt. Aspekte der Erfindung können in Verbindung miteinander bereitgestellt werden, und Merkmale eines Aspekts können auf andere Aspekte angewendet werden.
-
In einem ersten Aspekt wird eine Vorrichtung zum Entwerfen analoger Schaltungen bereitgestellt. Die Vorrichtung umfasst mindestens eine Entwurfseinheit, die einen Prozessor und eine Kommunikationsschnittstelle umfasst, wobei der Prozessor konfiguriert ist zum:
- (a) Steuern der Kommunikationsschnittstelle zum Empfangen von Informationen, die technische Anforderungen für die analoge Schaltung darstellen, wobei die technischen Anforderungen (i) mindestens eine Schaltungsleistungsanforderung und (ii) mindestens eine Fertigungsanforderung für die analoge Schaltung umfassen, um einen spezifischen Satz von fertigungsprozessbezogenen Regeln zu erfüllen;
- (b) Identifizieren, auf der Basis der empfangenen Informationen, mehrerer potentieller analoger Schaltungsentwurfsarchitekturen zum Erfüllen der Schaltungsleistungsanforderung, die die mindestens eine Fertigungsanforderung erfüllen werden;
- (c) Auswählen, als eine aktuelle analoge Schaltungsentwurfsarchitektur, einer anfänglichen analogen Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist;
- (d) Erzeugen eines aktuellen Entwurfs für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt;
- (e) Bestimmen, für den aktuellen Entwurf für die analoge Schaltung, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllen wird;
falls festgestellt wird, dass der aktuelle Entwurf für die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllen wird:
- (f) Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist, und
- (g) Wiederholen der Schritte (d) und (e); und
- (h) Ausgeben, falls festgestellt wird, dass der aktuelle Entwurf für die analoge Schaltungsentwurfsarchitektur die Schaltungsleistungsanforderung erfüllen wird, eines Entwurfs für die analoge Schaltung.
-
Der Prozessor kann ferner konfiguriert sein zum:
- (i) Bestimmen, für jeden aktuellen Entwurf für die analoge Schaltung, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln erfüllt;
- (j) Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist, und
- (k) Wiederholen der Schritte (d) und (e), um mehrere erzeugte analoge Schaltungsentwürfe zu erzeugen; und
- (l) Auswählen und Ausgeben eines Entwurfs für die analoge Schaltung aus den mehreren erzeugten analogen Schaltungsentwürfe, der die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln am besten erfüllt.
-
Die Auswahl der analogen Schaltungsentwurfsarchitektur in Schritt (c) und/oder Schritt (f) kann auf einer Priorisierung der mehreren potentiellen Architekturen beruhen, die eine priorisierte Liste potentieller analoger Schaltungsentwurfsarchitekturen erstellt, von denen festgestellt wurde, dass sie den Satz von fertigungsprozessbezogenen Regeln erfüllen. Die priorisierte Liste potentieller analoger Schaltungsentwurfsarchitekturen kann mit Hilfe eines maschinellen Lernmodells bestimmt werden.
-
In einigen Beispielen umfasst die Vorrichtung eine primäre Entwurfseinheit und eine sekundäre Entwurfseinheit,
- wobei die primäre Entwurfseinheit konfiguriert ist zum:
- (m) Identifizieren, auf der Basis der empfangenen Informationen, der mehreren potentiellen analogen Schaltungsentwurfsarchitekturen zum Erfüllen der Schaltungsleistungsanforderung, die die Fertigungsanforderung erfüllen werden; und
- (n) Auswählen, als die aktuelle analoge Schaltungsentwurfsarchitektur, der anfänglichen analogen Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen, wobei jede Schaltungsentwurfsarchitektur eine entsprechende Mehrzahl von Schaltungsteilen umfasst;
- (o) Bestimmen, für jeden Schaltungsteil der mehreren Schaltungsteile, jeweiliger Schaltungsleistungsanforderungen für diesen Schaltungsteil, wobei die jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil auf der Basis des spezifischen Satzes von fertigungsprozessbezogenen Regeln bestimmt werden; und
- (p) Bereitstellen der jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil mindestens einer der mehreren sekundären Entwurfseinheiten;
- und wobei jede der mehreren sekundären Entwurfseinheiten der analogen Schaltungsentwurfsvorrichtung konfiguriert ist zum:
- (q) Entwerfen eines jeweiligen Schaltungsteils der mehreren Schaltungsteile auf der Basis der von der primären Entwurfseinheit bereitgestellten Schaltungsleistungsanforderungen für diesen jeweiligen Schaltungsteil; und
- (r) Ausgeben eines resultierenden anfänglichen Entwurfs des jeweiligen Schaltungsteils;
- wobei die primäre Entwurfseinheit ferner konfiguriert ist zum:
- (s) Empfangen eines jeweiligen Entwurfs für jeden Schaltungsteil von jeder der mehreren sekundären Entwurfseinheiten; und
- (t) Erzeugen des aktuellen analogen Schaltungsentwurfs für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt, auf der Basis der jeweiligen Entwürfe für jeden Schaltungsteil.
-
Die primäre Entwurfseinheit kann ferner konfiguriert sein zum:
- (u) Simulieren einer analogen Schaltung auf der Basis des aktuellen analogen Schaltungsentwurfs, um mindestens eine Simulationsausgabe zu erzeugen;
- (v) Verifizieren, ob die analoge Schaltung die Schaltungsleistungsanforderung erfüllt oder nicht, und
Ausgeben des erzeugten Entwurfs, wenn die analoge Schaltung die Schaltungsleistungsanforderung erfüllt; und
wenn die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt: - Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl des weiteren analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist; und
- Wiederholen der Schritte (d) bis (e) und (m) bis (v).
-
Die primäre Entwurfseinheit kann ferner konfiguriert sein zum:
- (w) Simulieren einer analogen Schaltung auf der Basis des aktuellen analogen Schaltungsentwurfs, um mindestens eine Simulationsausgabe zu erzeugen;
- (x) Verifizieren, ob die analoge Schaltung die Schaltungsleistungsanforderung für die analoge Schaltung erfüllt oder nicht, und
- Ausgeben des erzeugten Entwurfs, wenn die analoge Schaltung die Schaltungsleistungsanforderung erfüllt; und
wenn die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt: - Bestimmen, für mindestens einen betroffenen Schaltungsteil der mehreren Schaltungsteile, überarbeiteter Schaltungsleistungsanforderungen für diesen betroffenen Schaltungsteil auf der Basis der Simulationsausgabe und der Schaltungsleistungsanforderung;
- Bereitstellen, mindestens einer entsprechenden sekundären Entwurfseinheit, der überarbeiteten Schaltungsleistungsanforderungen für jeden betroffenen Schaltungsteil;
- Empfangen eines jeweiligen aktualisierten Entwurfs jedes betroffenen Schaltungsteils von der mindestens einen entsprechenden sekundären Entwurfseinheit;
- Aktualisieren des aktuellen Entwurfs der analogen Schaltung mit dem jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils; und
- Wiederholen der Schritte (w) bis (x) für den aktualisierten Satz von Entwürfen.
-
Jede der mehreren sekundären Entwurfseinheiten kann so konfiguriert sein, dass sie den Entwurf des jeweiligen Teils auf der Basis des simulierten Verhaltens durch Anpassen des Entwurfs des jeweiligen Teils auf der Basis einer Differenz zwischen dem simulierten Verhalten und den Schaltungsleistungsanforderungen anpasst.
-
In einigen Beispielen ist, nach der Vollendung zumindest eines anfänglichen Entwurfs eines gegebenen Schaltungsteils durch zumindest eine andere der sekundären Entwurfseinheiten, zumindest eine der sekundären Entwurfseinheiten so konfiguriert, dass sie den aktuellen analogen Schaltungsentwurf auf der Basis eines Kontexts seines entsprechenden Schaltungsteils anpasst, wobei der Kontext Schaltungsleistungsanforderungen umfasst, die auf der Basis des vollendeten Entwurfs des gegebenen Schaltungsteils erzeugt wurden, der durch die zumindest andere der sekundären Entwurfseinheiten vollendet wurde.
-
In einigen Beispielen ist, nach der Vollendung mindestens eines anfänglichen Entwurfs eines gegebenen Schaltungsteils durch mindestens eine andere der sekundären Entwurfseinheiten, mindestens eine der sekundären Entwurfseinheiten so konfiguriert, dass sie ihren ausgegebenen anfänglichen Entwurf auf der Basis eines Kontexts seines entsprechenden Schaltungsteils anpasst, wobei der Kontext Schaltungsleistungsanforderungen umfasst, die auf der Basis des vollendeten Entwurfs des gegebenen Schaltungsteils erzeugt wurden, der durch die mindestens andere der sekundären Entwurfseinheiten vollendet wurde.
-
Jede der sekundären Entwurfseinheiten kann zum Wiederholen des Schritts des Anpassens des Entwurfs eines weiteren Schaltungsteils für den Fall konfiguriert sein, dass die Änderung des Entwurfs eines anderen Schaltungsteils der mehreren Schaltungsteile eine Änderung des Kontexts für diesen weiteren Schaltungsteil verursacht.
-
Zusätzlich oder alternativ kann jede der sekundären Entwurfseinheiten zum Wiederholen des Schritts des Anpassens des Entwurfs eines weiteren Schaltungsteils nur für den Fall konfiguriert sein, dass die Änderung des Kontexts größer ist als ein ausgewählter Kontextänderungsschwellenwert.
-
In einigen Beispielen ist die Vorrichtung so konfiguriert, dass sie den Kontext durch Simulieren der Leistung des gegebenen Schaltungsteils erhält.
-
In einem anderen Aspekt wird ein Verfahren zum Entwerfen einer analogen Schaltung bereitgestellt. Das Verfahren beinhaltet in einer Entwurfseinheit mit einem Prozessor und einer Kommunikationsschnittstelle Folgendes:
- (a) Steuern der Kommunikationsschnittstelle zum Empfangen von Informationen, die technische Anforderungen für die analoge Schaltung darstellen, wobei die technischen Anforderungen (i) mindestens eine Schaltungsleistungsanforderung und (ii) mindestens eine Fertigungsanforderung für die analoge Schaltung zur Erfüllung eines spezifischen Satzes von fertigungsprozessbezogenen Regeln umfassen;
- (b) Identifizieren, auf der Basis der empfangenen Informationen, mehrerer potentieller analoger Schaltungsentwurfsarchitekturen zum Erfüllen der Schaltungsleistungsanforderung, die die mindestens eine Fertigungsanforderung erfüllen werden;
- (c) Auswählen, als eine aktuelle analoge Schaltungsentwurfsarchitektur, einer anfänglichen analogen Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist;
- (d) Erzeugen eines aktuellen Entwurfs für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt;
- (e) Feststellen, für den aktuellen Entwurf für die analoge Schaltungsentwurfsarchitektur, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllen wird; falls festgestellt wird, dass der aktuelle Entwurf für die analoge Schaltungsentwurfsarchitektur die Schaltungsleistungsanforderung nicht erfüllt:
- (f) Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist, und
- (g) Wiederholen der Schritte (d) und (e); und
- (h) Ausgeben eines Entwurfs für die analoge Schaltung, falls festgestellt wird, dass der aktuelle Entwurf für die analoge Schaltungsentwurfsarchitektur die Schaltungsleistungsanforderung erfüllt.
-
Das Verfahren kann ferner Folgendes beinhalten:
- (i) Feststellen, für den aktuellen Entwurf für die analoge Schaltung, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln erfüllt;
- (j) Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist, und
- (k) Wiederholen der Schritte (d) und (e), um mehrere erzeugte analoge Schaltungsentwürfe zu erzeugen; und
- (l) Auswählen und Ausgeben eines Entwurfs für die analoge Schaltung aus den mehreren erzeugten analogen Schaltungsentwürfen, der die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln am besten erfüllt.
-
Die Auswahl der analogen Schaltungsentwurfsarchitektur in Schritt (c) und/oder Schritt (f) kann auf einer Priorisierung mehrerer potentieller Architekturen basieren, die eine priorisierte geordnete Liste potentieller analoger Schaltungsentwurfsarchitekturen erstellt, für die festgestellt wurde, dass sie den Satz von fertigungsprozessbezogenen Regeln erfüllen.
-
Das Verfahren kann ferner Folgendes beinhalten:
- in einer primären Entwurfseinheit:
- (m) Identifizieren, auf der Basis der empfangenen Informationen, der mehreren potentiellen analogen Schaltungsentwurfsarchitekturen zum Erfüllen der Schaltungsleistungsanforderung, die die Fertigungsanforderung erfüllen werden; und
- (n) Auswählen, als die aktuelle analoge Schaltungsentwurfsarchitektur, der anfänglichen analogen Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen, wobei jede Schaltungsentwurfsarchitektur eine jeweilige Mehrzahl von Schaltungsteilen umfasst;
- (o) Bestimmen, für jeden Schaltungsteil der mehreren Schaltungsteile, jeweiliger Schaltungsleistungsanforderungen für diesen Schaltungsteil, wobei die jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil auf der Basis des spezifischen Satzes von fertigungsprozessbezogenen Regeln bestimmt werden; und
- (p) Bereitstellen der jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil mindestens einer von mehreren sekundären Entwurfseinheiten;
- bei jeder von mehreren sekundären Entwurfseinheiten:
- (q) Entwerfen eines jeweiligen Schaltungsteils der mehreren Schaltungsteile auf der Basis der von der primären Entwurfseinheit bereitgestellten Schaltungsleistungsanforderungen für diesen jeweiligen Schaltungsteil; und
- (r) Ausgeben eines resultierenden anfänglichen Entwurfs des jeweiligen Schaltungsteils;
- das ferner an der primären Entwurfseinheit Folgendes beinhaltet:
- (s) Empfangen eines jeweiligen Entwurfs für jeden Schaltungsteil von jeder der mehreren sekundären Entwurfseinheiten; und
- (t) Erzeugen des aktuellen analogen Schaltungsentwurfs für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt, auf der Basis der jeweiligen Entwürfe für jeden Schaltungsteil.
-
Das Verfahren kann ferner an der primären Entwurfseinheit Folgendes beinhalten:
- (u) Simulieren einer analogen Schaltung auf der Basis des aktuellen analogen Schaltungsentwurfs, um mindestens eine Simulationsausgabe zu erzeugen;
- (v) Verifizieren, ob die analoge Schaltung die Schaltungsleistungsanforderung erfüllt oder nicht, und
- Ausgeben des erzeugten Entwurfs, wenn die analoge Schaltung die Schaltungsleistungsanforderung erfüllt; und
wenn die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt: - Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur, wobei die Auswahl des weiteren analogen Schaltungsentwurfs auf einer Priorisierung der mehreren potentiellen Architekturen basiert, die von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist; und
- Wiederholen der Schritte (d) bis (e) und (m) bis (v).
-
Das Verfahren kann ferner in der primären Entwurfseinheit Folgendes beinhalten:
- (w) Simulieren einer analogen Schaltung auf der Basis des aktuellen analogen Schaltungsentwurfs, um mindestens eine Simulationsausgabe zu erzeugen;
- (x) Verifizieren, ob die analoge Schaltung die Schaltungsleistungsanforderung für die analoge Schaltung erfüllt oder nicht, und
- Ausgeben des erzeugten Entwurfs, wenn die analoge Schaltung die Schaltungsleistungsanforderung erfüllt; und
wenn die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt: - Bestimmen, für mindestens einen betroffenen Schaltungsteil der mehreren Schaltungsteil, von überarbeiteten Schaltungsleistungsanforderungen für diesen betroffenen Schaltungsteil auf der Basis der Simulationsausgabe und der Schaltungsleistungsanforderung;
- Bereitstellen, mindestens einer entsprechenden sekundären Entwurfseinheit, der überarbeiteten Schaltungsleistungsanforderungen für jeden betroffenen Schaltungsteil;
- Empfangen eines jeweiligen aktualisierten Entwurfs jedes betroffenen Schaltungsteils von der mindestens einen entsprechenden sekundären Entwurfseinheit;
- Aktualisieren des Satzes von Entwürfen mit dem jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils; und
- Wiederholen der Schritte (w) bis (x) für den aktualisierten Satz von Entwürfen.
-
Das Verfahren kann ferner das Anpassen des Entwurfs des jeweiligen Teils in jeder der mehreren sekundären Entwurfseinheiten auf der Basis des simulierten Verhaltens durch Anpassen des Entwurfs des jeweiligen Teils auf der Basis einer Differenz zwischen dem simulierten Verhalten und den Schaltungsleistungsanforderungen beinhalten.
-
Das Verfahren kann ferner das Anpassen, nach dem Vollenden mindestens eines anfänglichen Entwurfs eines gegebenen Schaltungsteils durch mindestens eine andere der sekundären Entwurfseinheiten, des ausgegebenen anfänglichen Entwurfs von mindestens einer der sekundären Entwurfseinheiten auf der Basis eines Kontexts seines entsprechenden Schaltungsteils beinhalten, wobei der Kontext Schaltungsleistungsanforderungen umfasst, die auf der Basis des vollendeten Entwurfs des gegebenen Schaltungsteils erzeugt wurden, der durch die mindestens eine andere der sekundären Entwurfseinheiten vollendet wurde.
-
Das Verfahren kann ferner das Anpassen, nach dem Vollenden mindestens eines anfänglichen Entwurfs eines gegebenen Schaltungsteils durch mindestens eine andere der sekundären Entwurfseinheiten, des ausgegebenen anfänglichen Entwurfs von mindestens einer der sekundären Entwurfseinheiten auf der Basis eines Kontexts seines entsprechenden Schaltungsteils beinhalten, wobei der Kontext Schaltungsleistungsanforderungen umfasst, die auf der Basis des vollendeten Entwurfs des gegebenen Schaltungsteils erzeugt wurden, der durch die mindestens eine andere der sekundären Entwurfseinheiten vollendet wurde.
-
Das Verfahren kann ferner das Wiederholen, bei jeder der sekundären Entwurfseinheiten, des Schritts des Anpassens des Entwurfs eines weiteren Schaltungsteils für den Fall umfassen, dass die Modifikation des Entwurfs eines anderen Schaltungsteils der mehreren Schaltungsteile eine Änderung des Kontexts für diesen weiteren Schaltungsteil verursacht.
-
Das Verfahren kann ferner das Wiederholen, bei jeder der sekundären Entwurfseinheiten, des Schritts des Anpassens des Entwurfs eines weiteren Schaltungsteils nur für den Fall beinhalten, dass die Änderung des Kontextes größer ist als ein ausgewählter Kontextänderungsschwellenwert. In einigen Beispielen wird der Kontext durch Simulieren der Leistung des gegebenen Schaltungsteils erhalten.
-
Es versteht sich, dass das Verfahren ferner die Herstellung einer analogen Schaltung für den ausgebenen Entwurf beinhalten kann.
-
In einem anderen Aspekt wird ein computerlesbares nichtflüchtiges Speichermedium bereitgestellt, das ein Programm für einen Computer enthält, das so konfiguriert ist, dass es einen Prozessor veranlasst, eines der oben beschriebenen Verfahren durchzuführen.
-
Zeichnungen
-
Ausführungsformen der Offenbarung werden jetzt, nur beispielhaft, unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Dabei zeigt:
- 1A ein schematisches Funktionsschema einer beispielhaften analogen Schaltung;
- 1B das Funktionsschema von 1A, unterteilt in konzeptionelle Blöcke;
- 2 ein funktionelles schematisches Diagramm eines computerimplementierten hierarchischen Modells zum Entwerfen analoger Schaltungen;
- 3 ein funktionelles schematisches Flussdiagramm für ein Verfahren zum Entwerfen einer analogen Schaltung zur Verwendung mit dem Modus von 2 oder 4;
- 4 eine funktionelle schematische Ansicht einer anderen beispielhaften Implementation eines computerimplementierten Modells zum Entwerfen einer analogen Schaltung;
- 5 ein funktionelles schematisches Flussdiagramm für ein Verfahren zum Entwerfen einer analogen Schaltung, zum Beispiel anhand des beispielhaften computerimplementierten Modells von 2 oder 4;
- 6A Teile einer analogen Schaltung, die durch ein computerimplementiertes hierarchisches Modell entworfen wurde, wie das Modell, das unter Bezugnahme auf eine von 1A bis 2 und 4 bis 5 beschrieben ist;
- 6B ein Beispiel für eine entworfene analoge Schaltung, die die Schaltungsteile von 6A umfasst; und
- 7 eine schematische Darstellung eines beispielhaften Verfahrens zum Trainieren eines maschinellen Lernmodells, um Architekturen zu bewerten.
-
Spezifische Beschreibung
-
1A zeigt ein vereinfachtes Funktionsschema einer beispielhaften analogen elektronischen Schaltung, die in diesem Beispiel ein Analog-Digital-Wandler (ADC) 1000 ist. Die analoge Schaltung kann mehrere Teile oder Komponenten umfassen, z.B. einen Komparator 1001, einen DAC 1002, Pegelschieber 1003 und einen OP-AMP 1004. Während jede(r) Teil oder Komponente zunächst isoliert betrachtet werden kann, kann der Kontext oder die Umgebung, in der diese(r) Teil oder Komponente arbeitet, wenn er/sie in der Schaltung als Ganzes in situ eingesetzt wird, die Funktionsweise dieser/s Komponente/Blocks beeinflussen, einschließlich beispielsweise der parasitären Effekte, denen der Schaltungsteil und die Schaltung als Ganzes ausgesetzt sind. Der Entwurf analoger Schaltungen hat sich bisher aufgrund der komplexen Feedback-Schleifen und mathematischen Beziehungen zwischen verschiedenen Teilen/Komponenten der analogen Schaltung als schwierig zu automatisieren erwiesen.
-
Ausführungsformen der Ansprüche beziehen sich auf ein Verfahren und ein System zum Automatisieren des Entwurfs von analogen Schaltungen, so dass eine effizientere Schaltung entworfen werden kann. Insbesondere beziehen sich Ausführungsformen der Ansprüche auf ein Verfahren und ein System zum Automatisieren des Entwurfs von analogen Schaltungen, das sowohl Schaltungsleistungsanforderungen (z.B. Vorgaben eines Kunden) als auch Fertigungsanforderungen (z.B. die Fertigungsmöglichkeiten der Gießerei, in der die Schaltung hergestellt werden soll) berücksichtigt. Wie bereits erwähnt, involvieren konventionelle Ansätze für den Entwurf analoger Schaltungen in der Regel bestmögliche Schätzungen oder eine von Ingenieurteams auf der Basis ihres Vorwissens und ihrer Erfahrung manuell durchgeführte Schutzüberdimensionierung von Spezifikationen, was häufig dazu führt, dass die Schaltungen „over-engineered“ und ineffizient oder fehleranfällig sind. Wenn verschiedene Schaltungsarchitekturen für unterschiedliche Fertigungsanforderungen entwickelt werden müssen, z.B. für Gießerei- oder PDK-(Process Design Kit)-Anforderungen, kann es vorkommen, wenn ein analoger Schaltungsentwurf entworfen wurde, der für mehrere unterschiedliche Gießereien/PDKs geeignet ist, dass dieser „kompatible“ Schaltungsentwurf für alle Gießereien/PDKs ausgewählt wird, auch wenn er nicht der effizienteste Schaltungsentwurf für andere Gießereien ist. Dies führt zu einem ineffizienten Schaltungsentwurf. Im Gegensatz dazu haben die Erfinder in der vorliegenden Anmeldung überraschenderweise ein kontraintuitives Schaltungsentwurfsverfahren entwickelt, bei dem die am besten geeignete Architektur für einen analogen Schaltungsentwurf für eine(n) bestimmte(n) Gießerei/PDK ausgewählt wird, anstatt nur einen Schaltungsentwurf auszuwählen, der für die Verwendung mit der/dem Gießerei/PDK (sowie potentiell vielen anderen Gießereien/PDKs) geeignet ist. Der Ansatz ist kontra-intuitiv, da die Auswahl der am besten geeigneten Architektur die Auswahl eines Schaltungsentwurfs beinhalten kann, der zwar technisch komplexer, aber für die Erfüllung der geforderten Fertigungsanforderungen (z.B. die Gießerei/PDK-Anforderungen) optimiert und am effizientesten ist. Im Gegensatz dazu würde bei konventionellen Ansätzen für den Entwurf analoger Schaltungen eher der technisch einfachste Entwurf gewählt, der die geforderten Fertigungsanforderungen erfüllt.
-
Zum Implementieren dieser Lösung haben die Erfinder im vorliegenden Fall ein computerimplementiertes Modell entwickelt, das die Verantwortung für den Entwurf von Teilen oder Komponenten der analogen Schaltung an entsprechende Einheiten oder „Blöcke“ delegiert. Ein Beispiel für dieses Modell ist in 2 zu sehen. Ein solches hierarchisches Modell umfasst eine primäre Entwurfseinheit, „übergeordneter (oder Eltern-) Block“ 900 genannt, der als Kontrollinstanz fungiert, und eine Reihe sekundärer Entwurfseinheiten, „untergeordnete (oder Kind-) Blöcke“ 950a-d genannt, die von der primären Entwurfseinheit oder dem übergeordneten Block Anweisungen darüber erhalten, was sie entwerfen müssen.
-
Als Kontrollinstanz ist der übergeordnete Block 900 so konfiguriert, dass er die technischen Anforderungen empfängt und verarbeitet und mindestens eine Schaltungsleistungsanforderung und mindestens eine Fertigungsanforderung für die analoge Schaltung erhält, um einen bestimmten Satz von fertigungsprozessbezogenen Regeln zu erfüllen. Die fertigungsprozessbezogenen Regeln können, wie oben erwähnt, auf Gießerei- oder PDK-(Process Design Kit)-Anforderungen 350 beruhen. Dieser vom übergeordneten Block 900 durchgeführte Prozess ist in 3 zusammengefasst, die im Folgenden ausführlicher beschrieben wird.
-
Der übergeordnete Block 900 identifiziert auf der Basis der technischen Anforderungen mehrere potentielle analoge Schaltungsentwurfsarchitekturen zum Erfüllen der Schaltungsleistungsanforderungen, die die Fertigungsanforderung erfüllen werden. Wie unten beschrieben, kann der übergeordnete Block 900 dies durch Anwenden eines maschinellen Lernalgorithmus tun. Der übergeordnete Block 900 wählt dann als aktuelle analoge Schaltungsentwurfsarchitektur eine anfängliche analoge Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen aus, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist.
-
Das Modell erzeugt dann einen aktuellen Entwurf für die analoge Schaltung, der der aktuellen analogen Entwurfsarchitektur entspricht. Dies erfolgt, indem der übergeordnete Block 900 jede sekundäre Entwurfseinheit oder jeden untergeordneten Block 950a-d anweist, eine(n) jeweilige(n) Komponente oder Teil der analogen Schaltung auf der Basis der vom übergeordneten Block 900 erhaltenen Anweisungen zu entwerfen. Die Anweisungen können die Schaltungsleistungsanforderungen enthalten, die die/das Komponenten oder Teil erfüllen muss (z.B. funktionale Anforderungen).
-
Der übergeordnete Block 900 kann dies durch Identifizieren, auf der Basis der empfangenen Informationen, der mehreren potentiellen analogen Schaltungsentwurfsarchitekturen zur Erfüllung der Schaltungsleistungsanforderung tun, die die Fertigungsanforderung erfüllen werden. Der übergeordnete Block 900 wählt dann als die aktuelle analoge Schaltungsentwurfsarchitektur eine anfängliche analoge Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen aus, wobei jede Schaltungsentwurfsarchitektur eine jeweilige Mehrzahl von Schaltungsteilen umfasst, und bestimmt für jeden Schaltungsteil der mehreren Schaltungsteile jeweilige Schaltungsleistungsanforderungen für diesen Schaltungsteil, wobei die jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil auf der Basis des spezifischen Satzes von fertigungsprozessbezogenen Regeln bestimmt werden. Der übergeordnete Block 900 versorgt dann jeden der untergeordneten Blöcke 950a-d mit Anweisungen, die zum Beispiel die jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil umfassen können. Jeder untergeordnete Block 950a-d entwirft dann einen jeweiligen Schaltungsteil der mehreren Schaltungsteile auf der Basis der vom übergeordneten Block 900 bereitgestellten Schaltungsleistungsanforderungen für diesen jeweiligen Schaltungsteil und gibt einen resultierenden ersten Entwurf des jeweiligen Schaltungsteils aus. Der übergeordnete Block 900 empfängt einen jeweiligen Entwurf für jeden Schaltungsteil von jedem der mehreren untergeordneten Blöcke 950a-d und erzeugt den aktuellen analogen Schaltungsentwurf für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt, auf der Basis der jeweiligen Entwürfe für jeden Schaltungsteil.
-
Zusätzlich zu den jeweiligen Schaltungsleistungsanforderungen für jeden Schaltungsteil können die vom übergeordneten Block 900 bereitgestellten Anweisungen auch Informationen über den Kontext jeder Komponente oder jedes Teils der Schaltung enthalten - mit anderen Worten, was dieser Teil oder diese Komponente der Schaltung erfahren wird, wenn er/sie in der fertigen Schaltung in situ platziert wird (in einigen Beispielen kann der Kontext als Teil der Schaltungsleistungsanforderungen bereitgestellt werden, obwohl er in anderen Beispielen zusätzlich zu den Schaltungsleistungsanforderungen bereitgestellt werden kann). Der Kontext kann Parameter und Variablen umfassen, die der Teil oder die Komponente der Schaltung beim Gebrauch erfährt. Der Kontext eines/r beliebigen Schaltungsteils oder Komponente kann auf der Basis der Simulation der Leistung eines/r oder mehrerer Schaltungsteile oder Komponenten, die mit dem/r gegebenen Schaltungsteil oder -komponente interagieren, oder sogar durch Simulieren einer vollendeten Schaltung mit dem/r gegebenen Schaltungsteil oder -komponente erzeugt werden. Beispielsweise kann der übergeordnete Block 900 so konfiguriert sein, dass er eine vollendete Schaltung aus den von den einzelnen untergeordneten Blöcken 950a-d entworfenen Teilen oder Komponenten zusammensetzt und den Betrieb der zusammengesetzten Schaltung simuliert. Der Kontext eines/r gegebenen Schaltungsteils oder -komponente kann zusätzlich oder alternativ auf der Basis mathematischer Berechnungen oder Extraktionen erzeugt werden.
-
Nach dem Erzeugen eines Entwurfs einer analogen Schaltung, der die aktuelle analoge Schaltungsarchitektur erfüllt, wird der Entwurf der vollendeten analogen Schaltung getestet, um festzustellen, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllt. Dieser Test kann durch den übergeordneten Block 900 durchgeführt werden. Der übergeordnete Block 900 kann dies durch Simulieren einer analogen Schaltung auf der Basis des aktuellen analogen Schaltungsentwurfs zum Erzeugen mindestens einer Simulationsausgabe und dann durch Verifizieren tun, ob die analoge Schaltung die Schaltungsleistungsanforderung erfüllt oder nicht.
-
Falls festgestellt wird, dass der aktuelle Entwurf für die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt, wählt der übergeordnete Block eine weitere analoge Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen aus, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist. Das Modell wiederholt dann die Schritte des Erzeugens eines aktuellen Entwurfs für die analoge Schaltung, der die aktuelle analoge Schaltungsentwurfsarchitektur erfüllt, und des Testens des Entwurfs der vollendeten analogen Schaltung, um festzustellen, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllt. Erfüllt der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung nicht, wird dieser Vorgang wiederholt. Erfüllt der aktuelle Entwurf jedoch die mindestens eine Schaltungsleistungsanforderung, gibt der übergeordnete Block 900 einen Entwurf für die analoge Schaltung aus.
-
Beim Testen des Entwurfs der analogen Schaltungsentwurfsarchitektur bestimmt der übergeordnete Block 900 in einigen Beispielen für den aktuellen Entwurf für die analoge Schaltung, wenn festgestellt wird, dass er die mindestens eine Schaltungsleistungsanforderung erfüllt, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln erfüllt. Der übergeordnete Block 900 kann dann eine weitere analoge Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur auswählen, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängt, und wenn festgestellt wird, dass sie die mindestens eine Schaltungsleistungsanforderung erfüllt, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln erfüllt. Dieser Prozess kann wiederholt werden, um mehrere produzierte analoge Schaltungsentwürfe zu erzeugen, die alle die Schaltungsleistungsanforderung erfüllen, von denen jedoch einige besser für die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln geeignet sein können als andere. Der übergeordnete Block 900 kann dann einen Entwurf für die analoge Schaltung aus den mehreren erzeugten analogen Schaltungsentwürfen auswählen und ausgeben, der die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln am besten erfüllt.
-
Wenn der übergeordnete Block 900 eine analoge Schaltungsentwurfsarchitektur auswählt, kann dies auf einer Priorisierung der mehreren potentiellen Architekturen basieren. So kann beispielsweise eine priorisierte Liste potentieller analoger Schaltungsarchitekturen vorliegen, bei denen festgestellt wurde, dass sie die fertigungsprozessbezogenen Regeln erfüllen oder wahrscheinlich erfüllen. Die Liste könnte vom übergeordneten Block 900 erstellt worden sein, z.B. auf der Basis früherer Iterationen des Entwurfsprozesses, oder sie könnte dem übergeordneten Block 900 von anderer Stelle zugeführt werden. Wie weiter unten näher beschrieben wird, kann beispielsweise ein Algorithmus für maschinelles Lernen eine priorisierte Liste von analogen Schaltungsentwurfsarchitekturen auf der Basis von (i) der mindestens einen Schaltungsleistungsanforderung und (ii) der mindestens einen Fertigungsanforderung für die analoge Schaltung zur Erfüllung eines spezifischen Satzes von fertigungsprozessbezogenen Regeln bestimmen.
-
Das computer-implementierte hierarchische Modell kann iterativ sein. Nachdem der übergeordnete Block 900 jeden untergeordneten Block 950a-d angewiesen hat, seine jeweiligen Teile zu entwerfen, kann es sein, dass ein gewisses Maß an Neuentwurf der Schaltung und ihrer jeweiligen Teile erforderlich ist - zum Beispiel, um Merkmale wie die parasitären Effekte und/oder den Kontext zu berücksichtigen, die sich aus den jeweiligen von den anderen untergeordneten Blöcken 950a-d entworfenen Schaltungsteilen ergeben. Dies kann geschehen, bevor der übergeordnete Block 900 feststellt, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllen wird. Es kann zum Beispiel sein, dass bestimmte Teile der Schaltung angepasst werden müssen - zum Beispiel aufgrund des Kontextes, der von den anderen entworfenen Schaltungsteilen geliefert wird, und/oder aufgrund von geschätzten parasitären Effekten, die entweder von einem bestimmten Schaltungsteil oder von der vollendeten analogen Schaltung erfahren werden können. Der Prozess des Entwerfens der Schaltungsteile durch jeden untergeordneten Block 950a-d kann daher wiederholt werden, um die Entwürfe eines oder mehrerer Schaltungsteile anzupassen, um beispielsweise den Kontext und/oder die geschätzten parasitären Effekte zu berücksichtigen in dem Versuch, sie zu mildern und zu reduzieren. Dieser Prozess des Anpassens der Entwürfe von Schaltungsteilen kann von den untergeordneten Blöcken 950a-d iterativ wiederholt werden, beispielsweise bis jede Änderung der geschätzten parasitären Effekte, die durch Anpassungen an anderen Teilen oder Komponenten der analogen Schaltung verursacht wurde, berücksichtigt wurde. Beispielsweise kann der Prozess iterativ wiederholt werden, bis alle Änderungen der geschätzten parasitären Effekte unter einem ausgewählten Schwellenwert der Änderung von parasitären Effekten liegen.
-
Der Kontext und/oder parasitäre Effekte eines bestimmten Schaltungsteils können auf der Basis der Simulation der Leistung eines oder mehrerer mit diesem bestimmten Schaltungsteil interagierender Schaltungsteile oder sogar durch Simulieren einer vollendeten Schaltung, die diesen bestimmten Schaltungsteil umfasst, erzeugt werden. Beispielsweise kann der übergeordnete Block 900 so konfiguriert sein, dass er eine vollendete Schaltung aus den von den einzelnen untergeordneten Blöcken 950a-d entworfenen Teilen zusammensetzt und den Betrieb der zusammengesetzten Schaltung simuliert. Die parasitären Effekte eines bestimmten Schaltungsteils können zusätzlich oder alternativ auf der Basis mathematischer Berechnungen oder Extraktionen erzeugt werden. Zusätzlich oder alternativ können die parasitären Effekte eines bestimmten Schaltungsteils durch Nachschlagen in einer Datenbank mit Schaltungsentwürfen und parasitären Effekten ermittelt und/oder mit Hilfe eines maschinellen Lernmodells vorhergesagt werden. Der übergeordnete Block 900 kann dann verifizieren, ob die analoge Schaltung die Schaltungsleistungsanforderungen erfüllt oder nicht. Wenn die analoge Schaltung die Schaltungsleistungsanforderungen erfüllt, kann der übergeordnete Block 900 den erzeugten Entwurf ausgeben. Wenn die analoge Schaltung die Schaltungsleistungsanforderung nicht erfüllt, kann der übergeordnete Block 900 für mindestens einen betroffenen Schaltungsteil der mehreren Schaltungsteile überarbeitete Schaltungsleistungsanforderungen für diesen betroffenen Schaltungsteil auf der Basis der Simulationsausgabe und der Schaltungsleistungsanforderung bestimmen und die überarbeiteten Schaltungsleistungsanforderungen für jeden betroffenen Schaltungsteil an mindestens einen entsprechenden untergeordneten Block 950a-d weitergeben. Der übergeordnete Block 900 kann im Gegenzug einen jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils von dem mindestens einen entsprechenden untergeordneten Block 950a-d empfangen und den aktuellen Entwurf der Analogschaltung mit dem jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils aktualisieren. Der übergeordnete Block 900 kann dann optional für den aktualisierten aktuellen Entwurf für die analoge Schaltung bestimmen, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllt, und optional, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und/oder den Satz von fertigungsprozessbezogenen Regeln erfüllt.
-
Ein solches Verfahren ist in 3 schematisch dargestellt. Wie in 3 gezeigt, werden Informationen empfangen, die technische Anforderungen für die analoge Schaltung 350 darstellen. Die technischen Anforderungen 350 umfassen (i) mindestens eine Schaltungsleistungsanforderung und (ii) mindestens eine Fertigungsanforderung für die analoge Schaltung zum Erfüllen eines spezifischen Satzes von fertigungsprozessbezogenen Regeln. Im vorliegenden Fall umfassen die mindestens einen Fertigungsanforderungen Informationen in Bezug auf das PDK. Die technischen Anforderungen 350 sind Prozesse und die kritische Gerätephysik wird erfasst 301. Dieser Schritt kann das Identifizieren, auf der Basis der erhaltenen Informationen, mehrerer potentieller analoger Schaltungsentwurfsarchitekturen zur Erfüllung der Schaltungsleistungsanforderung beinhalten, die die mindestens eine Fertigungsanforderung erfüllen. Eine aktuelle analoge Schaltungsentwurfsarchitektur wird dann aus mehreren potentiellen analogen Schaltungsentwurfsarchitekturen ausgewählt, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist. Anschließend wird ein analoger Schaltungsentwurf erzeugt 305, der der aktuellen analogen Schaltungsentwurfsarchitektur entspricht. Die entworfene Schaltung wird dann analysiert 307, um für den aktuellen Entwurf der analogen Schaltung festzustellen, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllt. Wenn eine frühere Iteration der analogen Schaltung entworfen wurde, vergleicht der Prozess den neuen (aktuellen) Entwurf mit früheren Entwürfen, um festzustellen, ob der aktuelle analoge Schaltungsentwurf eine Verbesserung darstellt 309. Wenn in Schritt 309 festgestellt wird, dass der aktuelle analoge Schaltungsentwurf die Leistungsanforderung der Schaltung erfüllt, wird ein früherer analoger Schaltungsentwurf ausgegeben, der die Schaltungsleistungsanforderungen erfüllt. Stellt der aktuelle analoge Schaltungsentwurf dagegen eine Verbesserung dar, so wird die Schaltung überprüft, um festzustellen 311, ob eine Verbesserung der Schaltungsleistungsanforderungen durchgeführt werden könnte. Wenn festgestellt wird, dass eine Verbesserung möglich ist, wird die analoge Schaltung gemäß der aktuellen Entwurfsarchitektur neu entworfen. Wenn festgestellt wird, dass die Schaltungsleistungsanforderungen nicht verbessert werden können, wird festgestellt 313, ob eine andere Architektur verwendet werden kann, um zu sehen, ob diese andere Architektur eine verbesserte Architektur darstellen kann. Gibt es eine andere Architektur, die verwendet werden könnte, wird der Entwurfsprozess wiederholt. Gibt es keine andere Architektur, die verwendet werden könnte, wird der aktuelle analoge Schaltungsentwurf ausgegeben.
-
Die vorliegenden Erfinder haben festgestellt, dass ein solches Verfahren und die Verwendung eines iterativen hierarchischen Modells vorteilhafterweise die Automatisierung des Entwurfs analoger Schaltungen ermöglicht. Im Ergebnis bedeutet dies vorteilhafterweise, dass over-engineerte analoge Schaltungen und/oder Schaltungen mit inakzeptablen parasitären Effektven vermieden und stattdessen effizientere Schaltungen entworfen und erzeugt werden können. Außerdem haben die vorliegenden Erfinder erkannt, dass der Entwurf und die Auswahl einer analogen Schaltung auf diese Weise bedeutet, dass analoge Schaltungen entworfen werden können, die sowohl für die Schaltungsleistungsanforderungen als auch die Fertigungsanforderungen am besten geeignet sind. Dies bedeutet, dass effizientere Schaltungsarchitekturen hergestellt werden können, die z.B. auf die Anforderungen jeder/s Gießerei/PDK zugeschnitten sind, anstatt nur eine generische Architektur zu verwenden, die zwar mit den Anforderungen einer/s Gießerei/PDK kompatibel ist, aber nicht das beste Design darstellt (z.B. aufgrund von Ineffizienzen, Over-Engineering usw.).
-
Wie bereits erwähnt, zeigt 1A eine beispielhafte analoge Schaltungsarchitektur 1000, die in diesem Beispiel ein Analog-Digital-Wandler (ADC) ist. Konzeptionell kann die Schaltungsarchitektur in Funktionsblöcke unterteilt werden, die verschiedenen Teilen oder Komponenten der Schaltung entsprechen, z.B. auf der Basis ihrer jeweiligen Funktionalität. Diese Anordnung von Funktionsblöcken oder Komponenten kann als die Architektur bezeichnet werden. Ein ADC kann beispielsweise einen Komparator 1001, einen Digital-Analog-Wandler (DAC) 1002, mehrere Pegelschieber 1003 und einen oder mehrere OP-AMPs 1004 umfassen. In dem in 1A gezeigten Beispiel kann die Schaltung konzeptionell in Blöcke unterteilt werden, die diesen verschiedenen Teilen oder Komponenten entsprechen, aus denen die Architektur besteht. Wie in 1B gezeigt, kann beispielsweise der Komparator konzeptionell in einen ersten „untergeordneten Block“ 950a, der DAC in einen zweiten untergeordneten Block 950b, die Pegelschieber in einen dritten untergeordneten Block 950c und der OP-AMP in einen vierten untergeordneten Block 950d unterteilt werden. Der ADC als Ganzes kann konzeptionell als eigener Block klassifiziert werden (in 1 B mit „Eltern“ 900 bezeichnet). Es versteht sich, dass der ADC selbst einen konzeptionellen Block innerhalb einer größeren analogen Schaltung bilden kann.
-
Man wird verstehen, dass eine Schaltung, wenn sie eine andere Architektur hat, andere Komponenten und eine andere Anordnung und ein anderes Layout dieser Komponenten haben kann - zum Beispiel kann der OP-AMP 1004 in einer Architektur durch zwei kleinere OP-AMPs mit geringerer Verstärkung ersetzt werden, um einen spezifischen Satz von fertigungsprozessbezogenen Regeln zu erfüllen. Dies kann darauf zurückzuführen sein, dass die von einer/m Gießerei/PDK vorgegebenen fertigungsprozessbezogenen Regeln bedeuten, dass die Verstärkung des in 1A gezeigten OP-AMP 1004 nicht unterstützt werden kann, so dass die Verstärkung durch Ersetzen des einzelnen OP-AMP 1004 von 1A durch zwei OP-AMPs mit jeweils geringerer Verstärkung erreicht wird, um die gleiche Schaltungsleistung zu erzielen.
-
In einem anderen Beispiel kann ein PDK (z.B. PDK 180) eine Spannung von 1,8 V unterstützen, während ein zweiter PDK (z.B. PDK 28) eine Spannung von 0,9 V unterstützen kann. Für das PDK, das eine niedrigere Spannung unterstützt (d.h. PDK 28), kann eine analoge Schaltungsentwurfsarchitektur einen OTA-basierten Verstärker mit einem Source-Follower umfassen. Diese Architektur kann zwar auch für die höhere Spannung des PDK 180 verwendet werden, ist aber nicht die optimale Architektur für dieses PDK - stattdessen ist eine gefaltete Kaskode besser geeignet und effizienter. Die gefaltete Kaskodenarchitektur ist komplexer und wäre daher kontra-intuitiv, wenn das hier beschriebene Modell und Verfahren nicht verwendet würde. Aus diesem Grund kann man sagen, dass die vorliegende Anwendung einen kontra-intuitiven Ansatz für den Entwurf analoger Schaltungen beinhaltet.
-
Wie bereits erwähnt, gibt es bei der Verwendung in situ ein Zusammenspiel zwischen den einzelnen verchiedenen Blöcken einer analogen Schaltung. Die Interaktionen zwischen diesen Blöcken in situ (zu denen auch die parasitären Effekte gehören können, denen jeweilige Teile ausgesetzt sind, wenn sie in der vollendeten Schaltung platziert werden) und folglich die Parameter und Variablen, denen jeder Block ausgesetzt ist, wenn er in der Schaltung platziert wird, beeinflussen die Leistung dieser Schaltung. Beispielsweise kann die Spezifikation des in der Schaltung verwendeten OP-Verstärkers von einer Reihe von Parametern und Variablen abhängen, die sich aus der Auswahl und dem Design des Komparators, des DAC und/oder der Pegelschieber sowie der Verbindungen zwischen ihnen ergeben.
-
Eine nicht erschöpfende Liste von Beispielen für Parameter und Variablen, die sich auf Auswahl und Design dieser verschiedenen Blöcke auswirken können, beinhaltet unter anderem: Siliziumprozess, Temperaturbereich, Ausgangslast, Ausgangsimpedanz, Eingangskapazität, Eingangsgleichtaktbereich, Eingangsdifferenzhub, Versorgungsspannung, verfügbare Transistortypen, Ausgangsgleichtaktbereich, Ausgangshub, Einschwingzeit, Rauschtoleranz; PSRR (Power Supply Rejection Ratio); Gleichtaktbereich - Eingang (Eingangs-CMR); Gleichtaktbereich - Ausgang (Ausgangs-CMR); Linearität; maximaler Offset; Bandbreite; minimale Anstiegsrate; Eigenverzögerung; minimale Phasenspanne; Wirkleistungsaufnahme; statische Leistungsaufnahme; IP3-Punkt; Filtermittenfrequenz; Filterbandpassbereich; Lastsprungantwort; Leitungssprungantwort; Ausgangsgenauigkeit; Rauschzahl; Kalibrierbereich; Grundrauschen; SNR; ENOB; SINAD; Ausgangsfrequenzbereich; Jitter - ptp; Jitter - RMS; Ausgangswelligkeit ptp; Gesamtoberschwingungsverzerrung; Anlaufzeit; Kanalisolierung; Referenzspannung; Verstärkungsfehler; Offsetfehler; Verstärkungsdrift. Diese Parameter und Variablen können als der „Kontext“ oder die Umgebung bezeichnet werden, in der sich der Block befindet. Zum Erzeugen einer optimalen analogen Schaltung kann die Kenntnis des Kontexts den Entwurf der Schaltung verbessern. Man wird auch verstehen, dass einige dieser Parameter und Variablen Teil der Schaltungsleistungsanforderungen sein können.
-
Wie bereits erwähnt, kann die Fertigungsanforderung für die analoge Schaltung einen spezifischen Satz von fertigungsprozessbezogenen Regeln umfassen oder vorschreiben. Die Fertigungsanforderung könnte durch das von der Gießerei erstellte PDK (Process Design Kit) vorgegeben werden. Das PDK kann eine beliebige oder eine Kombination von physikalischen Einschränkungen, SPICE-Modellen (Simulationsmodellen), PCELLS und Tech Files, Rule Decks und Schaltplansymbolen enthalten.
-
Natürlich wird man jedoch erkennen, dass der Entwurf einer analogen Schaltung ein iterativer Prozess ist, bei dem Auswahl und Anpassung eines Blocks Auswirkungen auf den Kontext eines anderen Blocks haben kann, und so weiter. Sobald also die Komponenten eines Blocks ausgewählt/angepasst wurden, um einen Schaltungsteil zu bilden, müssen die Komponenten eines anderen Blocks möglicherweise angepasst oder neu ausgewählt werden, um die parasitären Effekte und/oder den Kontext zu berücksichtigen, denen/dem der/die vollendete Schaltung/Schaltungsteil ausgesetzt ist, in der/dem dieser Block enthalten ist. Ein solcher iterativer Prozess ist für eine manuelle Durchführung unpraktisch, er ist fehleranfällig und kann nur durch Kommunikation erkannt werden.
-
Wie bereits erwähnt, zeigt 2 ein Beispiel für ein computerimplementiertes Modell zur Verwendung in einem Verfahren zum Automatisieren des Entwurfs von analogen Schaltungen. 2 zeigt schematisch die in 1B gezeigten und oben erläuterten Blöcke sowie die Interaktionen zwischen den Blöcken.
-
In dem in 2 gezeigten Beispiel ist jeder Block des Modells für den Entwurf der durch diesen Block angegebenen Komponenten/Funktionalität verantwortlich. In 2 ist der untergeordnete Block (Kind 1) 950a für den Entwurf des Komparators 1001, der untergeordnete Block (Kind 2) 950b für den Entwurf des DAC 1002, der untergeordnete Block (Kind 3) 950c für den Entwurf der Pegelschieber 1003 und der untergeordnete Block (Kind 4) 950d für den Entwurf des OP-AMP 1004 zuständig. Der übergeordnete Block 900 ist für den Entwurf des ADC 1000 als Ganzes verantwortlich und delegiert die Verantwortung für den Entwurf der Teile/Komponenten/Funktionalität des ADC an die untergeordneten Blöcke 950a-d. In einigen Beispielen kann der übergeordnete Block 900 auswählen, wie viele untergeordnete Blöcke 950a-d erforderlich sind und welche Verantwortung den einzelnen Blöcken zugeschrieben wird. Obwohl die untergeordneten Blöcke 950a-d in einer bestimmten Reihenfolge dargestellt sind, ist diese Reihenfolge nicht unbedingt repräsentativ für die Reihenfolge, in der die Teile der Schaltung entworfen werden. Zum Beispiel kann der übergeordnete Block 900 den für den OP-AMP verantwortlichen untergeordneten Block 950d anweisen, diesen Teil der Schaltung zuerst zu entwerfen. In einigen Beispielen können die untergeordneten Blöcke 950a-d so konfiguriert sein, dass sie zuerst den Ausgang entwerfen und dann von dort rückwärts arbeiten.
-
Während jeder jeweilige Schaltungsteil zunächst von entsprechenden jeweiligen Blöcken isoliert entworfen werden kann, kann der Kontext, in dem jeder jeweilige Schaltungsteil arbeitet, wenn er in der Schaltung als Ganzes in situ angewendet wird, die Funktionsweise sowohl der jeweiligen Schaltungsteile als auch der Schaltung als Ganzes beeinflussen. Während der übergeordnete Block jeden untergeordneten Block anweisen kann, seine jeweiligen Teile zu entwerfen, ist es daher wahrscheinlich, dass, sobald eine Anfangsversion der entworfenen Schaltung vom übergeordneten Block 900 aus den von jedem untergeordneten Block 950a-d entworfenen Teilen oder Komponenten zusammengesetzt wurde, ein gewisses Maß an Anpassung oder sogar Neuentwurf der Schaltung 1000 und ihrer Teile oder Komponenten erforderlich ist, um die resultierenden parasitären Effekte und/oder den Kontext zu berücksichtigen, die/der durch von den anderen untergeordneten Blöcken 950a-d entworfenen Teile geschaffen wurde(n). Wie bereits erwähnt, ist dies ein iterativer Prozess.
-
Der übergeordnete Block 900 ist daher so konfiguriert, dass er als Controller fungiert und den von den einzelnen untergeordneten Blöcken durchgeführten Entwurfsprozess verarbeitet und handhabt. Um diese Funktion zu erfüllen, kann der übergeordnete Block 900, wie in 2 gezeigt, eine Reihe verschiedener Module umfassen, die jeweils zum Ausführen verschiedener Funktionen als Teil des Entwurfsprozesses konfiguriert sind.
-
Der übergeordnete Block in 2 besteht aus einem Anweisermodul 901, einem Zusammenbaumodul 902 und einem Verifikations- und Simulatormodul 903.
-
Das Anweisermodul 901 ist zum Empfangen technischer Anforderungen für die zu entwerfende Schaltung, einschließlich mindestens einer Schaltungsleistungsanforderung und mindestens einer Fertigungsanforderung für die analoge Schaltung zum Erfüllen eines bestimmten Satzes von fertigungsprozessbezogenen Regeln, und zum Umwandeln derselben in einen Satz von Anweisungen/Kriterien konfiguriert, die jeder untergeordnete Block 950a-d beim Entwerfen seiner jeweiligen Komponenten der Schaltung erfüllen muss. Es ist auch zum Vorbereiten der Anweisungen und zum Senden derselben zu jedem untergeordneten Block 950a-d in Bezug darauf konfiguriert, was sie entwerfen müssen und welche Kriterien sie dabei erfüllen müssen. Die Anweisungen können auch den Kontext anderer entworfener Teile von von anderen untergeordneten Blöcken entworfenen Schaltungen und den breiteren Kontext der Schaltung umfassen, in dem diese(r) Komponente oder Teil der Schaltung betrieben werden soll. Beispielsweise können die Schaltungsleistungsanforderungen angepasst werden, um den Kontext zu berücksichtigen.
-
Das Zusammenbaumodul 902 ist zum Empfangen und Zusammenstellen aller jeweiligen entworfenen Teile oder Komponenten der analogen Schaltung, die von jedem der untergeordneten Blöcke 950a-d bereitgestellt werden, und zum Zusammensetzen einer vollständigen analogen Schaltung auf der Basis der jeweiligen entworfenen Teile oder Komponenten konfiguriert. Die vollendete analoge Schaltung kann dann von dem Verifikations- und Simulationsmodul 903 getestet werden.
-
Das Verifikations- und Simulationsmodul 903 ist zum Empfangen der entworfenen Komponenten von jedem der untergeordneten Blöcke und zum Vergleichen derselben mit den technischen Anforderungssatz konfiguriert, um festzustellen, ob die entworfenen Teile oder Komponenten zufriedenstellend sind oder nicht. Dies kann durch Simulieren der Funktionsweise der zusammengesetzten Komponenten der analogen Schaltung erfolgen. Das Verifikations- und Simulationsmodul 903 kann feststellen, ob die/der entworfenen Komponenten/vollendete Schaltungsentwurf die technischen Anforderungen erfüllt, z.B. durch Verifizieren, ob ein(e) entworfene(r) jeweilige(r) Schaltungsteil oder -komponente die entsprechenden Schaltungsleistungsanforderungen erfüllt und/oder ob die entworfene analoge Schaltung den spezifischen Satz von fertigungsprozessbezogenen Regeln erfüllt oder nicht. Dabei kann es auch feststellen, wie gut sie diese Anforderungen erfüllt, z.B. durch Vergeben einer Punktzahl auf der Basis davon, wie gut die Anforderungen erfüllt sind und/oder ob sie überschritten werden. Es kann zusätzlich oder alternativ eine Validierungsprüfung umfassen, um festzustellen, ob die entworfene Schaltung in dem Sinne gültig ist, dass sie innerhalb bestimmter technischer Grenzen funktionieren kann oder nicht.
-
Das Verifikations- und Simulationsmodul 903 kann so konfiguriert sein, dass es als „Prüfstand“ fungiert und die Funktionsweise der zusammengesetzten Komponenten der Schaltung simuliert. Eine solche Simulation kann beispielsweise Informationen über parasitäre Effekte und/oder Kontextinformationen sowie Informationen darüber liefern, wie gut die Komponenten/der fertige Schaltungsentwurf die technischen Anforderungen wie die Schaltungsleistungsanforderungen und/oder den spezifischen Satz von fertigungsprozessbezogenen Regeln erfüllt/-en. Beispielsweise kann das Verifikations- und Simulationsmodul 903 so konfiguriert sein, dass es Leistungsinformationen einholt, z.B. in Bezug auf den Kontext und parasitäre Effekte, die in der analogen Schaltung auftreten, wenn die analoge Schaltung den entworfenen Schaltungsteil enthält, indem es die Leistung von mindestens einem von (i) dem entworfenen Schaltungsteil und (ii) einer den entworfenen Schaltungsteil umfassenden vollständigen analogen Schaltung in einem virtuellen Prüfstand mathematisch simuliert. Zusätzlich oder alternativ kann das Verifikations- und Simulationsmodul 903 so konfiguriert sein, dass es Leistungsinformationen, z.B. in Bezug auf parasitäre Effekte einholt, die in der analogen Schaltung auftreten, wenn die analoge Schaltung den entworfenen Schaltungsteil enthält, indem es eine Suche in einer Datenbank von Schaltungsentwürfen und parasitären Effekten durchführt, z.B. indem es eine Suche in einer Datenbank von Schaltungsentwürfen und parasitären Effekten für ähnliche erzeugte Entwürfe durchführt. Zusätzlich oder alternativ kann das Verifikations- und Simulatormodul 903 so konfiguriert sein, dass es in einer Datenbank von Schaltungsentwürfen und parasitären Effekten für mindestens einen der jeweiligen Schaltungsteile eine Suche nach ähnlichen jeweiligen Schaltungsteilen durchführt und Leistungsinformationen einholt, z.B. in Bezug auf parasitäre Effekte, die der erzeugte Entwurf erfährt, auf der Basis der Werte der parasitären Effekte, die über die Suche für den mindestens einen der jeweiligen Schaltungsteile erhalten wurden. In anderen Beispielen ist das Verifikations- und Simulationsmodul 903 so konfiguriert, dass es Leistungsinformationen, z.B. in Bezug auf parasitäre Effekte, die dieser erzeugte Entwurf erfährt, durch Verwendung eines maschinellen Lernmodells zur Vorhersage der Leistung der Schaltung einholt.
-
Das Verifikations- und Simulatormodul 903 kann auch so konfiguriert sein, dass es eine Datenbank mit Schaltungsentwürfen füllt, beispielsweise wenn das Anweisermodul 901 die untergeordneten Blöcke 950a-d anweist, den Prozess des Entwerfens von Schaltungsteilen auf der Basis von (neuen oder angepassten) entsprechenden Schaltungsleistungsanforderungen mehrmals zu wiederholen. Die Datenbank von Schaltungsentwürfen kann auch Informationen darüber enthalten, wie gut ein Schaltungsentwurf die technischen Anforderungen erfüllt.
-
Jeder untergeordnete Block 950a-d umfasst auch eine Reihe verschiedener Module, die jeweils zum Ausführen unterschiedlicher Funktionen im Rahmen des Entwurfsprozesses konfiguriert sind. In dem in 2 gezeigten Beispiel umfasst jeder untergeordnete Block 950a-d ein Wandlermodul 951 a-d, ein Zusammenbaumodul 952a-d und ein Simulatormodul 953a-d. Man wird verstehen, dass in einigen Beispielen jeder untergeordnete Block 950a-d darüber hinaus zusätzliche Module zum Anweisen von tertiären Entwurfseinheiten oder „Enkel“-Blöcken umfassen kann, ähnlich wie der übergeordnete Block 900 in 2 Module wie das Anweisermodul und das Verifikationsmodul zum Anweisen und Verifizieren des Entwurfsprozesses von den untergeordneten Blöcken 950a-d umfasst, wie im Folgenden unter Bezugnahme auf 4 bis 6 näher beschrieben wird.
-
Das Wandlermodul 951 a-d jedes untergeordneten Blocks 950a-d ist zum Empfangen der vom übergeordneten Block 900 empfangenen Schaltungsleistungsanforderungen und optional des Kontexts der Schaltung als Ganzes sowie des Kontexts der anderen Komponenten der Schaltung und zum Umwandeln derselben in einen Satz von Anforderungen zum Entwerfen eines Teils oder einer Komponente der analogen Schaltung konfiguriert, um diese Kriterien zu erfüllen. Man wird verstehen, dass in einigen Beispielen die Kontextinformationen als Teil der Schaltungsleistungsanforderungen bereitgestellt und empfangen werden können, in anderen Beispielen können sie jedoch zusätzlich zu den Anforderungen an die Schaltungsleistung (z.B. separat davon) bereitgestellt werden.
-
Das Zusammenbaumodul 952a-d ist zum Auswählen und/oder Entwerfen elektronischer Komponenten konfiguriert, um die daran gestellten Anforderungen zu erfüllen, die den Anweisungen/Kriterien entsprechen, die vom übergeordneten Block und dem Kontext der Schaltung als Ganzes und/oder dem Kontext der anderen Komponenten der Schaltung vorgegeben werden.
-
Das Simulatormodul 953a-d kann auch so konfiguriert sein, dass es simuliert, wie diese Komponenten in situ ablaufen würden, um zu prüfen/verifizieren, ob die vom Zusammenbaumodul entworfenen Teile oder Komponenten technisch machbar sind. In einigen Beispielen kann das Simulatormodul 953a-d auch Informationen über die parasitären Effekte des jeweiligen Schaltungsteils erhalten, den sein Block entworfen hat, und zwar in ähnlicher Weise wie das oben beschriebene Verifikations- und Simulatormodul 903 des übergeordneten Blocks 900 (man wird verstehen, dass in solchen Beispielen das Verifikations- und Simulatormodul 903 des übergeordneten Blocks 900 keine Informationen über parasitäre Effekte zu erhalten braucht, da dies evtl. bereits durch das Simulatormodul 953a-d jedes untergeordneten Blocks 950a-d erfolgte).
-
Beim Gebrauch erhält der übergeordnete Block 900 einen Satz technischer Anforderungen für eine zu entwerfende analoge Schaltung 1000. Die technischen Anforderungen beinhalten mindestens eine Schaltungsleistungsanforderung und mindestens eine Fertigungsanforderung für die analoge Schaltung, um einen bestimmten Satz von fertigungsprozessbezogenen Regeln zu erfüllen. In dem in 2 gezeigten Beispiel erhält der übergeordnete Block 900 einen Satz von technischen Anforderungen für einen zu entwerfenden ADC, der bestimmte Eigenschaften aufweist, einschließlich z.B. Eigenschaften, die von der den ADC herstellenden Gießerei vorgegeben werden (d.h. den Fertigungsanforderungen).
-
Der übergeordnete Block 900 empfängt diese Anforderungen, und das Anweisermodul 901 wandelt sie in einen Satz von Anweisungen/Kriterien um. Als Teil dieses Prozesses wählt das Anweisermodul 901 als aktuelle analoge Schaltungsentwurfsarchitektur eine anfängliche analoge Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen aus, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist.
-
Diese Anweisungen/Kriterien werden dann zu jedem der untergeordneten Blöcke 950a-d gesendet. Das Anweisermodul 901 kann diese Anweisungen/Kriterien zu jedem der untergeordneten Blöcke 950a-d parallel (d.h. alle gleichzeitig) oder in Reihe senden (z.B. wenn die Kriterien zu den untergeordneten Blöcken Kind 1, dann Kind 2, dann Kind 3 usw. gesendet werden). In einigen Beispielen kann das Anweisermodul 901 warten, bis es eine entworfene Schaltung vom ersten Kind erhält, bevor es einen Satz von Schaltungsleistungsanforderungen zum nächsten Kind sendet, und in einigen Beispielen kann das Anweisermodul so konfiguriert sein, dass es die an das nächste Kind gesendeten Schaltungsleistungsanforderungen auf der Basis der vom vorhergehenden Kind erhaltenen entworfenen Schaltung anpasst - mit anderen Worten auf der Basis des Kontexts der vom vorhergehenden Kind erhaltenen entworfenen Schaltung.
-
In Beispielen, in denen Anweisungen/Kriterien in Reihe zu den untergeordneten Blöcken 950a-d gesendet werden, können die Anweisungen/Kriterien Mittel umfassen, um zu unterscheiden, welche Teile der Schaltungsleistungsanforderungen für welche untergeordneten Blöcke 950a-d relevant sind - beispielsweise können die Anweisungen/Kriterien Headers oder Flags umfassen, die angeben, ob ein bestimmter Teil der Anweisungen/Kriterien für einen untergeordneten Block 950a-d relevant ist oder nicht. Diese Header oder Flags können vom übergeordneten Block 900 bestimmt und die Anweisungen/Kriterien entsprechend angepasst werden, um sie einzubeziehen.
-
Jeder untergeordnete Block 950a-d erhält diese Anweisungen/Kriterien vom übergeordneten Block 900, und jedes jeweilige Wandlermodul 951a-d wandelt diese in einen Satz von Anforderungen für den Entwurf eines Teils oder einer Komponente der analogen Schaltung um, um diese Schaltungsleistungsanforderungen erfüllen. Das Zusammenbaumodul 952a-d empfängt diese Anforderungen und entwirft Komponenten/einen Teil der Schaltung, die diese Anforderungen erfüllen. Man wird verstehen, dass dieser Entwurfsprozess eine Suche in einer Datenbank mit bekannten Schaltungsentwürfen (oder Teilen davon) und das Auffinden eines Schaltungsentwurfs umfassen kann, der den Anweisungen/Kriterien am besten entspricht.
-
Das Simulatormodul 953a-d simuliert dann, wie diese Komponenten/Teile der Schaltung in situ funktionieren würden, um zu prüfen, ob die entworfenen Komponenten/Teile der vom Zusammenbaumodul entworfenen Schaltung technisch machbar sind und/oder um zu verifizieren, ob der entsprechende entworfene jeweilige Schaltungsteil die Anweisungen/Kriterien erfüllt oder nicht. Wenn der entworfene Schaltungsteil die entsprechenden Anweisungen/Kriterien erfüllt, ist der untergeordnete Block 950a-d dann zum Senden oder Ausgeben des/der entworfenen Teils oder Komponente der Schaltung zurück an den übergeordneten Block 900 konfiguriert. Wenn der entworfene Schaltungsteil die entsprechenden Anweisungen/Kriterien nicht erfüllt, ist der untergeordnete Block 950a-d so konfiguriert, dass er den Entwurf seines Schaltungsteils anpasst und den Vorgang wiederholt.
-
Sobald der übergeordnete Block 900 alle entworfenen Teile oder Komponenten der Schaltung von allen untergeordneten Blöcken 950a-d zurückerhält, setzt das Zusammenbaumodul 902 des übergeordneten Blocks 900 die vollendete Schaltung (in diesem Fall den ADC) aus den von den einzelnen untergeordneten Blöcken entworfenen Teilen oder Komponenten zusammen und verifiziert mit Hilfe des Verifikations- und Simulatormoduls 903, ob die entworfene Schaltung die technischen Anforderungen erfüllt. Dies kann durch Simulieren der Leistung der zusammengebauten Schaltung und Vergleichen dieser simulierten Leistung mit den Schaltungsleistungsanforderungen und/oder den Fertigungsanforderungen geschehen. Das Verifikations- und Simulationsmodul 903 kann beispielsweise feststellen, ob die entworfenen Komponenten/der vollendete Schaltungsentwurf die technischen Anforderungen erfüllt/- en, indem es beispielsweise verifiziert, ob ein(e) entworfene(r) jeweilige(r) Schaltungsteil oder -komponente die entsprechenden Schaltungsleistungsanforderungen erfüllt und/oder ob die entworfene analoge Schaltung den spezifischen Satz von fertigungsprozessbezogenen Regeln erfüllt. Dabei kann es auch feststellen, wie gut sie diese Anforderungen erfüllt, indem sie z.B. eine Punktzahl vergibt, die darauf basiert, wie gut die Anforderungen erfüllt sind und/oder ob sie überschritten werden. Zusätzlich oder alternativ kann es eine Validierungsprüfung umfassen, um festzustellen, ob die entworfene Schaltung in dem Sinne gültig ist, dass sie innerhalb bestimmter technischer Grenzen betrieben werden kann oder nicht. Man wird verstehen, dass in einigen Beispielen diese simulierte Leistung des vollendeten analogen Schaltungsentwurfs verwendet werden kann, um die parasitären Effekte und/oder die optionalen Kontextinformationen (z.B. für eine andere Entwurfseinheit) zu erhalten, und der übergeordnete Block 900 kann die Schaltungsleistungsanforderungen auf der Basis der parasitären Effekte und/oder der optionalen Kontextinformationen, die über die Simulation des fertigen analogen Schaltungsentwurfs erhalten wurden, anpassen.
-
Wenn die simulierte Leistung der entworfenen Schaltung die mindestens eine Schaltungsleistungsanforderung nicht erfüllt (z.B. ein Parameter der simulierten Schaltung ist größer als ein Schwellenwert oder unterscheidet sich von einem durch die Schaltungsleistungsanforderungen vorgegebenen Parameter, z.B. die parasitären Effekte liegen über einem Schwellenwert für parasitäre Effekt), dann teilt das Verifikationsmodul 903 dies dem Anweisermodul 901 mit. Das Anweisermodul 901 kann dann eine weitere analoge Schaltungsentwurfsarchitektur als die aktuelle analoge Schaltungsentwurfsarchitektur auswählen, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist.
-
In einigen Beispielen kann der übergeordnete Block 900 (z.B. das Verifikationsmodul 903/Anweisermodul 901), vor dem Auswählen einer weiteren analogen Schaltungsentwurfsarchitektur, konfiguriert sein zum Bestimmen, welche(r) Teil oder Komponente der Schaltung dafür verantwortlich ist, dass die Schaltung die Schaltungsleistungsanforderungen nicht erfüllt (z.B. welcher Teil für einen großen Anteil der parasitären Effekte verantwortlich ist), und falls ein oder mehrere untergeordnete Blöcke 950a-d identifiziert werden können, kann der übergeordnete Block 900 so konfiguriert sein, dass er die überarbeiteten Schaltungsleistungsanforderungen nur zu dem untergeordneten Block sendet, der für die fehlerhaften Teile oder Komponenten der Schaltung verantwortlich ist. In anderen Beispielen können die überarbeiteten Kriterien jedoch zu allen untergeordneten Blöcken 950a-d zurückgesendet werden. Es wird auch deutlich, dass in einigen Beispielen das übergeordnete Modul 900 feststellen kann, dass zusätzliche und/oder alternative untergeordnete Blöcke 950a-d und/oder Enkel-Blöcke erforderlich sein können, um die relevanten Teile oder Komponenten der Schaltung zu entwerfen, z.B. um die überarbeiteten Schaltungsleistungsanforderungen zu erfüllen.
-
Der Prozess wird dann iterativ fortgesetzt, wobei das Wandlermodul 951 a-d jedes untergeordneten Blocks 950a-d diese überarbeiteten oder angepassten Schaltungsleistungsanforderungen vom übergeordneten Block 900 erhält und diese in einen neuen Satz von Anweisungen/Kriterien für den Entwurf eines Teils oder einer Komponente der analogen Schaltung umwandelt, um diese angepassten Schaltungsleistungsanforderungen zu erfüllen. Das Zusammenbaumodul 952a-d empfängt diese neuen Anweisungen/Kriterien und entwirft Komponenten/einen Teil der Schaltung, die diese Anforderungen erfüllen. Das Simulatormodul 953a-d kann dann simulieren, wie die/der neu entworfene(n) Komponenten/Teil der Schaltung in situ funktionieren würde(n), um zu prüfen, ob die/der vom Montagemodul entworfene(n) Komponenten/Teil der Schaltung technisch machbar ist/sind. Der untergeordnete Block 950a-d ist dann so konfiguriert, dass er die/den (neu) entworfene(n) Komponenten/Teile der Schaltung zum übergeordneten Block 900 zurücksendet.
-
Sobald der übergeordnete Block 900 alle (neu) entworfenen Komponenten/Teile der Schaltung von allen untergeordneten Blöcken 950a-d zurückerhält, baut der übergeordnete Block 900 die vollendete Schaltung (in diesem Fall den ADC) aus den von jedem untergeordneten Block entworfenen Komponenten/Teilen zusammen und verifiziert über das Verifikations- und Simulationsmodul 903, das die Leistung der zusammengebauten Schaltung simulieren kann und diese simulierte Leistung mit den Schaltungsleistungsanforderungen vergleicht, ob die entworfene Schaltung die Schaltungsleistungsanforderungen erfüllt. Wenn die analoge Schaltung die Schaltungsleistungsanforderungen erfüllt, kann der übergeordnete Block 900 den erzeugten Entwurf ausgeben. Erfüllt die analoge Schaltung die Schaltungsleistungsanforderungen nicht, kann der übergeordnete Block 900 für mindestens einen betroffenen Schaltungsteil der mehreren Schaltungsteile überarbeitete Anweisungen/Kriterien für diesen betroffenen Schaltungsteil auf der Basis der Simulationsausgabe und der Schaltungsleistungsanforderungen bestimmen und die überarbeiteten Anweisungen/Kriterien für jeden betroffenen Schaltungsteil an mindestens einen entsprechenden untergeordneten Block 950a-d weitergeben. Der übergeordnete Block 900 kann im Gegenzug einen jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils von dem mindestens einen entsprechenden untergeordneten Block 950a-d empfangen und den aktuellen Entwurf der analogen Schaltung mit dem jeweiligen aktualisierten Entwurf jedes betroffenen Schaltungsteils aktualisieren.
-
Wie in 3 wie oben beschrieben gezeigt, kann der übergeordnete Block 900 dann optional für den aktualisierten aktuellen Entwurf für die analoge Schaltung feststellen, ob der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung erfüllt, und optional, wie gut der aktuelle Entwurf die mindestens eine Schaltungsleistungsanforderung und/oder den Satz von fertigungsprozessbezogenen Regeln erfüllt. Dieser Prozess kann wiederholt werden, um mehrere produzierte analoge Schaltungsentwürfe zu erzeugen, die alle die Schaltungsleistungsanforderung erfüllen, von denen jedoch einige besser für die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln geeignet sein können als andere. Der übergeordnete Block 900 kann dann einen Entwurf für die analoge Schaltung aus den mehreren produzierten analogen Schaltungsentwürfen auswählen und ausgeben, der die mindestens eine Schaltungsleistungsanforderung und den Satz von fertigungsprozessbezogenen Regeln am besten erfüllt.
-
Man wird verstehen, dass die untergeordneten Blöcke 950a-d und/oder der übergeordnete Block 900 auch ein Schleifenminderungsmodul umfassen können, um das Auftreten endloser Neuentwurfsschleifen zu verhindern. Beispielsweise kann das Schleifenminderungsmodul so konfiguriert sein, dass es einen Datensatz von zuvor entworfenen Schaltungen hat und eine Schleifenanzeige ausgibt, wenn ein(e) neu entworfene(r) Komponente/Teil einer Schaltung oder eine vollendete Schaltung mit einer/m zuvor entworfenen Komponente/Teil einer Schaltung oder einer vollendeten Schaltung identisch ist oder sich von einer/m zuvor entworfenen Komponente/Teil einer Schaltung oder einer vollendeten Schaltung nur um weniger als einen ausgewählten Differenzschwellenwert unterscheidet. Der übergeordnete Block 900 kann beispielsweise das Schleifenminderungsmodul umfassen und so konfiguriert sein, dass er den Entwurfsprozess beendet und die zuletzt entworfene Schaltung als die vollendete Schaltung akzeptiert, wenn das Schleifenminderungsmodul die Schleifenanzeige liefert. Zusätzlich oder alternativ kann der übergeordnete Block 900 so konfiguriert sein, dass er den ausgewählten Differenzschwellenwert verringert, beispielsweise wenn der Entwurfsprozess für eine ausgewählte Anzahl von Iterationen wiederholt wird. Dies kann dazu führen, dass der „beste Kompromiss“ für eine funktionierende Schaltung gefunden wird, die die technischen Anforderungen erfüllt.
-
4 illustriert eine schematische Funktionsansicht einer weiteren beispielhaften Implementation eines computerimplementierten Modells für den Entwurf analoger Schaltungen. Die Implementation des Modells ähnelt in vielerlei Hinsicht dem in 2 gezeigten Modell, und die oben für die übergeordneten Blöcke 900 und die untergeordneten Blöcke 950a-d in 2 beschriebene Funktionalität kann den übergeordneten und untergeordneten Blöcken in 4 zugeschrieben werden. Darüber hinaus kann ein Teil der in 2 beschriebenen Funktionalität in Bezug auf eine primäre Entwurfseinheit oder einen übergeordneten Block 900 einer sekundären Entwurfseinheit oder einem untergeordneten Block 950a-d in 4 zugeschrieben werden, wenn dieser untergeordnete Block tertiäre Entwurfseinheiten oder „Enkel“-Blöcke unter sich hat, und so weiter.
-
Ausführlicher, wie in 4 gezeigt, umfasst die Modellhierarchie eine Kernentwurfsschicht mit einer primären Entwurfseinheit oder einem übergeordneten Block. Obwohl in der Kernentwurfsschicht in 4 nur ein übergeordneter Block 900 dargestellt ist, wird man verstehen, dass es in einigen Beispielen mehr als einen übergeordneten Block 900 geben kann, z.B. wenn alle übergeordnetem Blöcke 900 parallel arbeiten. Beispielsweise kann jeder übergeordnete Block 900 zum Entwerfen verschiedener Aspekte (z.B. funktionell und/oder strukturell voneinander verschieden) einer analogen Schaltung konfiguriert sein.
-
Unterhalb der Kernentwurfsschicht befindet sich eine erste Entwurfsschicht. Die erste Entwurfsschicht umfasst sekundäre Entwurfseinheiten oder untergeordnete Blöcke 950, die mit dem übergeordneten Block 900 der darüber liegenden Schicht (in diesem Fall der Kernentwurfsschicht) verbunden sind. In dem gezeigten Beispiel gibt es sechs untergeordnete Blöcke, die alle mit dem übergeordneten Block der Kernentwurfsschicht verbunden sind. Die untergeordneten Blöcke 950 sind in zwei verschiedene Gruppen unterteilt: eine erste Gruppe umfasst die untergeordneten Blöcke 1, 2 und 3, und eine zweite Gruppe die untergeordneten Blöcke 3, 4 und 5. Jeder untergeordnete Block 950 ist mit dem übergeordneten Block 900 verbunden. Die beiden Gruppen können unterschiedliche Funktionsregionen und -bereiche einer analogen Schaltung darstellen, die auf Anweisung des übergeordneten Blocks 900 parallel entworfen werden.
-
In dem gezeigten Beispiel sind die untergeordneten Blöcke 950 der ersten Gruppe parallel mit dem übergeordneten Block 900 der Kernentwurfsschicht gekoppelt, und die untergeordneten Blöcke 950 der zweiten Gruppe sind parallel mit dem übergeordneten Block 900 der Kernentwurfsschicht gekoppelt. Die untergeordneten Blöcke 950 können auf diese Weise gruppiert werden, um verschiedene Bereiche oder Aspekte (z.B. funktionell und/oder strukturell voneinander verschieden) einer analogen Schaltung zu entwerfen. Man wird jedoch verstehen, dass in einigen Beispielen nicht alle untergeordneten Blöcke 950 der ersten Entwurfsschicht parallel mit dem übergeordneten Block der Kernentwurfsschicht gekoppelt sein müssen. So können beispielsweise die Kind-Blöcke 1 und 3 der ersten Entwurfsschicht mit dem übergeordneten Block 900 der Kernentwurfsschicht gekoppelt sein, und der Kind-Block 2 der ersten Entwurfsschicht kann in Reihe mit den Kind-Blöcken 1 bzw. 3 der ersten Entwurfsschicht gekoppelt sein.
-
Die Gruppierung der untergeordneten Blöcke 950 kann durch den übergeordneten Block 900 der Kernentwurfsschicht bestimmt werden. Beispielsweise kann der übergeordnete Block 900 so konfiguriert sein, dass er die untergeordneten Blöcke der ersten Entwurfsschicht so gruppiert, dass sie unterschiedliche Aspekte (z.B. funktional und/oder strukturell voneinander verschieden) einer analogen Schaltung entwerfen. Der übergeordnete Block 900 der Kernentwurfsschicht kann so konfiguriert sein, dass er dies auf der Basis einer Bestimmung der Anforderungen aus einer Kundenspezifikation tut.
-
Unterhalb der ersten Entwurfsschicht befindet sich eine zweite Entwurfsschicht. Die zweite Entwurfsschicht umfasst tertiäre Entwurfseinheiten oder Enkel-Blöcke 1, 2, 3, 4, 5, 6, 7 und 8 960. Die Enkel-Blöcke 960 sind mit den untergeordneten Blöcken der darüber liegenden Schicht (der ersten Entwurfsschicht) gekoppelt. Nicht jeder untergeordnete Block der ersten Entwurfsschicht ist mit einem Enkel-Block der zweiten Entwurfsschicht gekoppelt. In dem gezeigten Beispiel sind die Enkel-Blöcke 1, 2 und 3 der zweiten Entwurfsschicht parallel zum Kind-Block 2 der ersten Entwurfsschicht gekoppelt. Wie oben für die untergeordneten Blöcke 950 der ersten Entwurfsschicht beschrieben, ist jedoch zu verstehen, dass in einigen Beispielen nicht alle Enkel-Blöcke der zweiten Entwurfsschicht parallel mit dem untergeordneten Block der ersten Entwurfsschicht gekoppelt werden müssen. Beispielsweise können die Enkel-Blöcke 1 und 3 der zweiten Entwurfsschicht mit dem Kind-Block 2 der ersten Entwurfsschicht gekoppelt sein, und der Enkel-Block 2 der zweiten Entwurfsschicht kann in Reihe mit den Enkel-Blöcken 1 bzw. 3 der zweiten Entwurfsschicht gekoppelt sein.
-
Unterhalb der zweiten Entwurfsschicht befindet sich eine weitere (n-te) Entwurfsschicht. Die n-te Entwurfsschicht umfasst Urenkel-Blöcke 1, 2, 3 und 4 970. Die Urenkel-Blöcke 970 sind mit den Enkel-Blöcken 960 der darüber liegenden Schicht (der zweiten Entwurfsschicht) in ähnlicher Weise gekoppelt, wie die Enkel-Blöcke 960 der zweiten Entwurfsschicht mit den untergeordneten Blöcken 950 der ersten Entwurfsschicht gekoppelt sind. Man wird daher verstehen, dass es unterhalb der zweiten Entwurfsschicht mehrere weitere Entwurfsschichten geben kann, die jeweils ihre eigenen Blöcke umfassen, die mit Blöcken der darüber liegenden Schicht gekoppelt sind.
-
Die Struktur der in 4 dargestellten Blockhierarchie ist derart, dass die Blöcke der verschiedenen Schichten des Modells zum Entwerfen von Aspekten oder Teilen einer analogen Schaltung auf verschiedenen Komplexitätsstufen konfiguriert sind. Zum Beispiel kann der übergeordnete Block 900 so konfiguriert sein, dass er eine vollständige analoge Schaltung entwirft, die untergeordneten Blöcke 950 können so konfiguriert sein, dass sie funktionale Komponenten der analogen Schaltung entwerfen (z.B. einen Op-Amp, einen AC/DC-Wandler, Pegelschieber, Komparatoren, Spannungsregler, Leistungsschalter usw.), und der Enkel-Block 960 kann so konfiguriert sein, dass er die Komponenten dieser funktionalen Komponente entwirft (z.B. die Anordnung von Widerständen, Transistoren, Kondensatoren, Dioden, Induktoren usw. für diese Komponente).
-
Der übergeordnete Block 900 (der Kernentwurfsschicht) kann so konfiguriert sein, dass er den Komplexitätsgrad bestimmt, zu dessen Entwurf ein Block einer ausgewählten Schicht konfiguriert ist, und/oder die Blöcke einer Schicht können so konfiguriert sein, dass sie den Komplexitätsgrad bestimmen, zu dessen Entwurf die Blöcke der darunter liegenden Schicht konfiguriert sind.
-
Zusätzlich oder alternativ ist die Struktur der in 4 gezeigten Blockhierarchie derart, dass die Blöcke verschiedener Schichten des Modells zum Entwerfen von Aspekten oder Teilen einer analogen Schaltung auf der Basis unterschiedlicher funktionaler oder struktureller Anforderungen konfiguriert sind. Beispielsweise kann eine Schicht Blöcke umfassen, die zum Entwerfen von Aspekten oder Teilen einer analogen Schaltung auf der Basis einer funktionalen Anforderung (z.B. Größe) konfiguriert sind, und eine andere Schicht kann Blöcke umfassen, die zum Entwerfen einer anderen funktionalen Anforderung (z.B. Strom oder Spannung) konfiguriert sind.
-
5 zeigt ein funktionelles schematisches Flussdiagramm für ein beispielhaftes Verfahren zum Entwerfen einer analogen Schaltung, z.B. anhand des beispielhaften computerimplementierten hierarchischen Modells von 2 oder 4. Das Verfahren von 5 hat viele Merkmale mit dem oben in Bezug auf 2 beschriebenen Verfahren gemeinsam.
-
In Schritt 500 erhält der übergeordnete Block 900 die technischen Anforderungen für die zu entwerfende Schaltung, einschließlich mindestens einer Schaltungsleistungsanforderung und mindestens einer Fertigungsanforderung für die analoge Schaltung, um einen bestimmten Satz von fertigungsprozessbezogenen Regeln zu erfüllen. Der übergeordnete Block 900 ist zum Umwandeln der technischen Anforderungen in einen Satz von Anweisungen/Kriterien konfiguriert. Als Teil dieses Prozesses wählt das Anweisermodul 901 als aktuelle analoge Schaltungsentwurfsarchitektur 502 eine anfängliche analoge Schaltungsentwurfsarchitektur aus den mehreren potentiellen analogen Schaltungsentwurfsarchitekturen aus, wobei die Auswahl des anfänglichen analogen Schaltungsentwurfs von dem Satz von fertigungsprozessbezogenen Regeln abhängig ist.
-
Der übergeordnete Block 900 kann zusätzlich oder alternativ zum Bestimmen konfiguriert sein, ob diese Anweisungen/Kriterien parallel oder in Reihe zu untergeordneten Blöcken 950 zu senden sind und/oder ob unterschiedliche Sätze von Anweisungen/Kriterien an untergeordnete Blöcke 950 einer darunter liegenden Schicht zu senden sind.
-
In dieser Phase kann der übergeordnete Block 900 auch zum Bestimmen der Anzahl der Schichten des Modells konfiguriert sein - beispielsweise auf der Basis der ausgewählten aktuellen analogen Schaltungsentwurfsarchitektur, oder alternativ kann der Block jeder Schicht zum Bestimmen konfiguriert sein, ob Blöcke einer darunter liegenden Schicht erforderlich sind, wenn sie Teile der Schaltung entwerfen, mit deren Entwurf sie durch einen Block in einer darüber liegenden Schicht beauftragt sind.
-
Sobald der übergeordnete Block 900 die technischen Anforderungen 502 in Anweisungen/Kriterien umgewandelt hat, sendet 504 er diese zu Kind 1 der ersten Entwurfsschicht. Diese Anweisungen/Kriterien können angeben, wie viele untergeordnete Blöcke 950 dieser Schicht verwendet werden sollen und welcher untergeordnete Block 950 mit dem Entwurf jedes Teils der analogen Schaltung beauftragt werden soll.
-
Nach Erhalt der Kriterien entwirft Kind 1 einen ersten Teil der analogen Schaltung 506 auf der Basis der empfangenen Anweisungen/Kriterien entsprechend der aktuellen analogen Schaltungsentwurfsarchitektur. Man wird verstehen, dass Kind 1 so konfiguriert sein kann, dass es einen ersten Teil der analogen Schaltung auf der Basis einer Teilmenge/eines ersten Teils der für sie geltenden Anweisungen/Kriterien entwirft, wie vom übergeordneten Block bestimmt.
-
Sobald Kind 1 den ersten Teil der analogen Schaltung entworfen hat, können die vom übergeordneten Block 900 empfangenen Anweisungen/Kriterien vorschreiben, dass Kind 1 den entworfenen ersten Teil der Schaltung und die Kriterien an ein zweites Kind (Kind 2) der gleichen Schicht weiterleitet.508 Kind 2 kann einen zweiten Teil der analogen Schaltung auf der Basis der empfangenen Anweisungen/Kriterien gemäß der aktuellen analogen Schaltungsentwurfsarchitektur entwerfen 510, und in einigen Beispielen kann der zweite Teil der analogen Schaltung nur auf der Basis einer Teilmenge der Anweisungen/Kriterien (z.B. nur der für ihn geltenden Teile) oder auf der Basis aller Anweisungen/Kriterien entworfen werden.
-
Kind 2 passt auch den Entwurf des zweiten Teils der analogen Schaltung auf der Basis des Kontexts an, der durch den von Kind 1 entworfenen ersten Teil der analogen Schaltung erzeugt wurde. In einigen Beispielen kann dieser Kontext in Form eines angepassten Satzes von Kriterien ausgedrückt werden - beispielsweise kann/können Kind 1 und/oder der übergeordnete Block so konfiguriert sein, dass es/er die Kriterien auf der Basis des Kontexts und/oder der parasitären Effekte anpasst, die durch den von Kind 1 entworfenen ersten Teil der Schaltung bereitgestellt werden, aber man wird verstehen, dass in anderen Beispielen der Kontext und/oder die parasitären Effekte zusätzlich/separat zu/von den Kriterien bereitgestellt werden kann/können. In Beispielen, in denen der übergeordnete Block ein Verifikations- und Simulationsmodul umfasst, kann das Verifikations- und Simulationsmodul die Leistung des/der entworfenen Teils oder Komponente der Schaltung simulieren, um die Informationen über Kontext und/oder parasitäre Effekte zu erhalten. Zusätzlich oder alternativ kann in Beispielen, in denen jeder Kind-Block ein Verifikations- und Simulationsmodul umfasst, das Verifikations- und Simulationsmodul die Leistung des/der entworfenen Teils oder Komponente der Schaltung simulieren, um die Informationen über Kontext und/oder parasitäre Effekte zu erhalten.
-
In einigen Beispielen kann Kind 2 feststellen, dass es Blöcke einer niedrigeren Schicht verwenden muss, um Teile der Schaltung zu entwerfen, die es gemäß der aktuellen analogen Schaltungsentwurfsarchitektur entwerfen soll, und/oder feststellen, ob diese Blöcke einer niedrigeren Schicht in Reihe und/oder parallel verwendet werden sollen. Zusätzlich oder alternativ können die von Kind 2 empfangenen Kriterien vorgeben (z.B. wie vom Eltern-Block bestimmt), dass Kind 2 Blöcke einer niedrigeren Schicht für den Entwurf von Teilen der Schaltung, mit deren Entwurf Kind 2 beauftragt ist, verwenden soll (und ob diese Blöcke in Reihe oder parallel verwendet werden sollen). Wie in 6 gezeigt, kann Kind 2 beispielsweise optional Enkel 1 und Enkel 2 anweisen 512, eine Teilmenge des zweiten Teils der analogen Schaltung zu entwerfen. In solchen Beispielen kann Kind 2 optional überprüfen 513, ob der Teil der Schaltung, der von den Blöcken der darunter liegenden Schicht (im gezeigten Beispiel Enkel 1 und Enkel 2) entworfen wurde, die von ihnen geforderten Anweisungen/Kriterien erfüllt.
-
Kind 2 sendet 514 dann den entworfenen ersten Teil, den entworfenen zweiten Teil und die Anweisungen/Kriterien zu Kind 3. In einigen Beispielen können die Anweisungen/Kriterien von einem vorherigen Kind geändert werden. Zum Beispiel können die Anweisungen/Kriterien von Kind 1 und/oder Kind 2 geändert werden, bevor sie zum nächsten Kind gesendet werden. So kann beispielsweise Kind 2 so konfiguriert sein, dass es die Anweisungen/Kriterien, die es an Kind 3 sendet, auf der Basis des entworfenen ersten Teils der Schaltung und/oder des entworfenen zweiten Teils der Schaltung ändert.
-
Kind 3 entwirft 516 dann einen dritten Teil der analogen Schaltung gemäß der aktuellen analogen Schaltungsentwurfsarchitektur auf der Basis der empfangenen Anweisungen/Kriterien und zusätzlich oder alternativ den entworfenen ersten Teil und/oder den entworfenen zweiten Teil der Schaltung.
-
Kind 3 sendet 518 dann die vollendete Schaltung zum Eltern-Block, und der Eltern-Block erzeugt einen anfänglichen Entwurf für die analoge Schaltung auf der Basis des Satzes von jeweiligen Schaltungsteilentwürfen und stellt fest 520, ob die aktuell entworfene vollendete Schaltung die Schaltungsleistungsanforderungen erfüllt. Wie bereits erwähnt, kann der übergeordnete Block dies tun, indem er ein Verifikations- und Simulationsmodul einsetzt, um die Leistung der vollendeten Schaltung zu simulieren.
-
Erfüllt die entworfene vollendete Schaltung die Schaltungsleistungsanforderungen nicht, wählt der übergeordnete Block eine weitere analoge Schaltungsentwurfsarchitektur aus, wobei die Auswahl der weiteren analogen Schaltungsentwurfsarchitektur von dem Satz von fertigungsprozessbezogenen Regeln abhängt. Der Prozess wiederholt sich dann, wobei der übergeordnete Block erneut Anweisungen/Kriterien zu Kind 1 senden 522 kann, um eine neue analoge Schaltung gemäß der neuen analogen Schaltungsentwurfsarchitektur zu entwerfen. Im Rahmen dieses Prozesses kann der übergeordnete Block feststellen, dass zusätzliche oder alternative Kind-(und/oder Enkel)-Blöcke verwendet werden müssen.
-
Man wird verstehen, dass in dem obigen Beispiel der erste, zweite, dritte und vierte Teil der analogen Schaltung unabhängige Teile der Schaltung sein und/oder funktionell voneinander abhängen können. In anderen Beispielen können der erste, zweite, dritte und vierte Teil der analogen Schaltung ausgewählte Teilsätze der analogen Schaltung sein. So kann beispielsweise der zweite Teil Teile des ersten Teils, der dritte Teil Teile des ersten und zweiten Teils und der vierte Teil Teile des ersten, zweiten und dritten Teils umfassen.
-
6A zeigt Eingangspuffer, Pegelschieber, DACs und einen Komparator. Jedes dieser Elemente kann einen Teil einer vollständigen analogen Schaltung bilden, wie z.B. der in 6B gezeigte vollständige ADC.
-
Die in 6A und 6B gezeigten Beispiele wurden anhand eines computerimplementierten hierarchischen Modells, wie oben beschrieben, entworfen. Ein übergeordneter Block (oder primäre Entwurfseinheit) ist für den Entwurf des gesamten ADC verantwortlich, wobei untergeordnete Blöcke (oder sekundäre Entwurfseinheiten) jeweils für die Eingangspuffer, Pegelschieber, DACs und den Komparator zuständig sind. Der übergeordnete Block erhält technische Anforderungen von einem Benutzer und wandelt diese in Schaltungsleistungsanforderungen um, die von den einzelnen untergeordneten Blöcken für den Entwurf ihrer jeweiligen Teile der Schaltung verwendet werden. Der Kontext anderer Teile der Schaltung wird berücksichtigt und von den untergeordneten Blöcken beim Entwerfen ihrer jeweiligen Teile der Schaltung verwendet. Das Modell ist auch insofern iterativ, als dass, sobald der übergeordnete Block 900 jeden untergeordneten Block 950a-d angewiesen hat, seine jeweiligen Teile oder Komponenten zu entwerfen, ein gewisses Maß an Neuentwurf der Schaltung und ihrer Teile durchgeführt wird, so dass der von den anderen Teilen der Schaltung bereitgestellte Kontext beim Entwerfen der jeweiligen Schaltungsteile und der Schaltung als Ganzes verwendet wird. Wie oben beschrieben, kann jeder untergeordnete Block und/oder übergeordnete Block auch eine Validierung/Verifizierung durchführen, um festzustellen, ob die entworfenen Teile bzw. die vollständige Schaltung die an sie gestellten technischen Anforderungen erfüllen.
-
In der in 6B gezeigten Schaltung gibt es zwei DACs, weil die Schaltung einen differentiellen ADC arbeitet bereitstellt... [sic] Der Grund für die mehreren (im gezeigten Beispiel drei) Eingangspuffer ist, dass zwei zur Pufferung von zwei Eingängen verwendet werden und die Referenz ebenfalls als Eingang gepuffert wird.
-
Wie bereits erwähnt, kann die Vorrichtung zum Entwerfen analoger Schaltungen ein maschinelles Lernmodell verwenden, um potentielle analoge Schaltungsentwurfsarchitekturen zu identifizieren, auszuwählen und/oder zu priorisieren.
-
Das maschinelle Lernmodell kann ein neuronales Netz umfassen. Das neuronale Netz kann mindestens eines von einem tiefen Residualnetzwerk, einem Highway-Netzwerk, einem dicht verbundenen Netzwerk und einem Kapselnetzwerk umfassen.
-
Bei jedem dieser Netzwerktypen kann das Netz mehrere verschiedene Neuronen umfassen, die in verschiedenen Schichten organisiert sind. Jedes Neuron ist zum Empfangen von Eingangsdaten, Verarbeiten dieser Eingangsdaten und Liefern von Ausgangsdaten konfiguriert. Jedes Neuron kann zum Durchführen einer bestimmten Operation an seinen Eingabedaten konfiguriert sein, z.B. kann dies eine mathematische Verarbeitung der Eingabedaten beinhalten. Die Eingabedaten für jedes Neuron können eine Ausgabe von mehreren anderen vorhergehenden Neuronen umfassen. Im Rahmen der Verarbeitung der Eingabedaten durch ein Neuron wird jedem Eingabedatenstrom (z.B. einem Eingabedatenstrom für jedes vorangehende Neuron, das seinen Ausgang an das Neuron liefert) eine Gewichtung zugeordnet. Auf diese Weise beinhaltet die Verarbeitung von Eingabedaten durch ein Neuron das Anwenden von Gewichtungen auf die verschiedenen Eingabedatenströme, so dass verschiedene Eingabedaten mehr oder weniger zur Gesamtausgabe eines Neurons beitragen. Anpassungen des Werts der Eingaben für ein Neuron, z.B. als Folge einer Änderung der Eingabegewichtungen, können zu einer Änderung des Werts der Ausgabe für dieses Neuron führen. Die Ausgangsdaten jedes Neurons können zu mehreren nachfolgenden Neuronen gesendet werden.
-
Die Neuronen sind in Schichten organisiert. Jede Schicht besteht aus mehreren Neuronen, die an Daten arbeiten, die ihnen vom Ausgang der Neuronen in den vorhergehenden Schichten geliefert werden. Innerhalb jeder Schicht kann es eine große Anzahl verschiedener Neuronen geben, von denen jedes eine andere Gewichtung auf seine Eingangsdaten anwendet und eine andere Operation an seinen Eingangsdaten durchführt. Die Eingabedaten für alle Neuronen in einer Schicht können die gleichen sein, und die Ausgaben der Neuronen werden an Neuronen in nachfolgenden Schichten weitergeleitet.
-
Die genaue Weiterleitung zwischen Neuronen in verschiedenen Schichten ist ein Hauptunterschied zwischen Kapselnetzen und tiefen Residualnetzen (einschließlich Varianten wie Highway-Netze und dicht verbundene Netze).
-
Bei einem Residualnetz können die Schichten in Blöcken organisiert sein, so dass das Netz aus mehreren Blöcken besteht, von denen jeder mindestens eine Schicht enthält. Bei einem Residualnetz können die Ausgangsdaten aus einer Schicht von Neuronen mehr als einen unterschiedlichen Weg nehmen. Bei herkömmlichen neuronalen Netzen (z.B. neuronalen Faltungsnetzen) werden Ausgabedaten von einer Schicht in die nächste geleitet, und dies setzt sich bis zum Ende des Netzes fort, so dass jede Schicht Eingaben von der unmittelbar vorherigen Schicht erhält und Ausgaben an die unmittelbar folgende Schicht liefert. Bei einem Residualnetz kann jedoch eine andere Weiterleitung zwischen Schichten erfolgen. Zum Beispiel kann der Ausgang einer Schicht an mehrere verschiedene nachfolgende Schichten weitergeleitet werden, und der Eingang für eine Schicht kann von mehreren verschiedenen vorherigen Schichten empfangen werden.
-
In einem Residualnetz können Schichten von Neuronen in verschiedenen Blöcken organisiert sein, wobei jeder Block mindestens eine Schicht von Neuronen umfasst. Blöcke können so angeordnet sein, dass Schichten so aufeinander gestapelt sind, dass der Ausgang einer/von vorherigen Schicht/-en in den Eingang des nächsten Schichtenblocks einfließt. Die Struktur des Residualnetzes kann derart sein, dass der Ausgang eines Blocks (oder einer Schicht) sowohl in den unmittelbar darauf folgenden Block (oder die Schicht) als auch in mindestens einen anderen, später folgenden Block (oder eine Schicht) geleitet wird. Es können Abkürzungen in das neuronale Netz eingeführt werden, die Daten von einer Schicht (oder einem Block) zu einer anderen weiterleiten, während andere Schichten (oder Blöcke) dazwischen umgangen werden. Dies kann ein effizienteres Training des Netzes ermöglichen, z.B. wenn es sich um sehr tiefe Netze handelt, da dadurch Probleme im Zusammenhang mit der Verschlechterung beim Training des Netzes angegangen werden können (was weiter unten ausführlicher erörtert wird). Die Anordnung eines neuronalen Residualnetzes kann Verzweigungen ermöglichen, so dass dieselbe Eingabe, die einer Schicht oder einem Block von Schichten zugeführt wird, auch mindestens einer anderen Schicht oder einem Block von Schichten zugeführt wird (z.B. so dass die andere Schicht sowohl mit den Eingabedaten als auch mit den Ausgabedaten der einen Schicht oder des Blocks von Schichten arbeiten kann). Diese Anordnung kann ein tieferes Eindringen in das Netz ermöglichen, wenn Backpropagation-Algorithmen zum Trainieren des Netzes verwendet werden. Dies liegt zum Beispiel daran, dass während des Lernens Schichten oder Blöcke von Schichten als Eingabe die Eingabe einer/s vorherigen Schicht/Blocks und die Ausgabe der/der vorherigen Schicht/Blocks verwenden können, und dass Abkürzungen verwendet werden können, um eine tiefere Penetration zu erreichen, wenn die Gewichtungen für das Netz aktualisiert werden.
-
Bei einem Kapselnetz können Schichten in anderen Schichten verschachtelt werden, um „Kapseln“ zu bilden. Verschiedene Kapseln können so ausgelegt sein, dass sie für verschiedene Aufgaben besser geeignet sind als andere Kapseln. Ein Kapselnetz kann dynamisches Routing zwischen Kapseln vorsehen, so dass für eine bestimmte Aufgabe die für die Bearbeitung dieser Aufgabe kompetenteste Kapsel zugewiesen wird. So kann z.B. ein Kapselnetzwerk vermeiden, die Ausgabe von jedem Neuron in einer Schicht an jedes Neuron in der nächsten Schicht weiterzuleiten. Eine Kapsel auf einer niedrigeren Ebene ist so konfiguriert, dass sie ihre Eingaben an eine (nachfolgende) Kapsel auf einer höheren Ebene sendet, von der festgestellt wird, dass sie die wahrscheinlichste Kapsel zum Verarbeiten dieser Eingabe ist. Kapseln können die Aktivität von Kapseln höherer Schichten vorhersagen. So kann eine Kapsel beispielsweise einen Vektor ausgeben, dessen Orientierung Eigenschaften eines bestimmten Objekts repräsentiert. Als Reaktion darauf kann jede nachfolgende Kapsel als Ausgabe eine Wahrscheinlichkeit liefern, dass das Objekt, auf dessen Identifizierung die Kapsel trainiert ist, in den Eingabedaten vorhanden ist. Diese Informationen (z.B. die Probabilitäten) können an die Kapsel zurückgegeben werden, die dann dynamisch die Routing-Gewichte bestimmen und die Eingabedaten zur nachfolgenden Kapsel weiterleiten kann, die am wahrscheinlichsten die relevante Kapsel für die Verarbeitung dieser Daten ist.
-
Bei beiden Arten von neuronalen Netzen können mehrere verschiedener Schichten mit unterschiedlichen Funktionen vorhanden sein. Das neuronale Netz kann mindestens eine Faltungsschicht enthalten, die so konfiguriert ist, dass sie Eingangsdaten über ihre Höhe und Breite faltet. Das neuronale Netz kann auch mehrere Filterschichten enthalten, von denen jede mehrere Neuronen umfasst, die so konfiguriert sind, dass sie sich auf verschiedene Teile der Eingabedaten konzentrieren und Filter darauf anwenden. Weitere Schichten können zur Verarbeitung der Eingabedaten enthalten sein, z.B. Pooling-Schichten (zur Einführung von Nichtlinearität) wie Maximum-Pooling und globales Durchschnitts-Pooling, ReLU-(Rectified Linear Units)-Schicht und Verlustschichten, von denen einige z.B. Regularisierungsfunktionen enthalten können. Der letzte Block von Schichten kann Eingaben von der letzten Ausgabeschicht (oder mehreren Schichten, wenn Verzweigungen vorhanden sind) erhalten. Der letzte Block kann mindestens eine vollständig verbundene Schicht umfassen.
-
Die letzte Ausgabeschicht kann einen Klassifikator enthalten, z.B. einen Softmax-, Sigmoid- oder Tanh-Klassifikator. Verschiedene Klassifikatoren können für verschiedene Ausgabentypen geeignet sein; so kann beispielsweise ein Sigmoid-Klassifikator geeignet sein, wenn die Ausgabe ein binärer Klassifikator ist. Das neuronale Netz der vorliegenden Offenbarung kann zum Vorhersagen konfiguriert werden, welche analoge Schaltungsentwurfsarchitektur wahrscheinlich funktionieren wird, und zwar auf der Basis von der Schaltungsleistungsanforderungen und/oder der Fertigungsanforderungen für die analoge Schaltung, um einen bestimmten Satz von fertigungsprozessbezogenen Regeln festzulegen. Der Ausgang des neuronalen Netzes kann einen Hinweis auf die Wahrscheinlichkeit geben, dass eine analoge Schaltungsentwurfsarchitektur sowohl die mindestens eine Fertigungsanforderung als auch die mindestens eine Schaltungsleistungsanforderung erfüllen wird. Beispielsweise kann der Ausgang des neuronalen Netzes die Wahrscheinlichkeit angeben, dass eine analoge Schaltungsentwurfsarchitektur die mindestens eine Schaltungsleistungsanforderung erfüllt, mit dem Wissen, dass sie definitiv die mindestens eine Fertigungsanforderung erfüllen wird. Die Schaltungsentwurfsarchitekturen können gemäß ihrer ermittelten Wahrscheinlichkeit priorisiert oder in eine Rangfolge gebracht werden, so dass beispielsweise, wenn ein übergeordneter Block, wie oben beschrieben, eine Schaltungsentwurfsarchitektur aus mehreren Schaltungsentwurfsarchitekturen auswählt, die die mindestens eine Fertigungsanforderung erfüllen wird, diejenige zuerst ausgewählt wird, für die festgestellt wurde, dass sie die höchste Wahrscheinlichkeit hat, die mindestens eine Schaltungsleistungsanforderung zu erfüllen.
-
7 zeigt eine schematische Darstellung eines beispielhaften Verfahrens zum Trainieren eines maschinellen Lernmodells, um die Wahrscheinlichkeit abzuschätzen, dass eine analoge Schaltungsentwurfsarchitektur mindestens eine Fertigungsanforderung und mindestens eine Schaltungsleistungsanforderung erfüllt. Das neuronale Netzwerk 700 ist so konfiguriert, dass es als Eingabe 710 entworfene Schaltungsteile und/oder analoge Schaltungen erhält. Die entworfenen Schaltungsteile und/oder analogen Schaltungen können in einer Datenbank gespeichert und anhand des oben unter Bezugnahme auf 1A bis 6B beschriebenen computerimplementierten Modells entworfen worden sein, wobei ein hierarchisches Modell von primären Entwurfseinheiten und sekundären Entwurfseinheiten verwendet wird. Die Schaltungsteile und/oder analogen Schaltungen können vektorisiert und/oder codiert werden, z.B. mittels One-Hot-Codierung, um ein binäres Format zu erhalten. Dieser Eingang wird dann in eine Reihe von 3D-Schichten des neuronalen Netzes eingespeist. Es gibt mehrere Merkmale dieses Netzes, die beim Training des Netzes variiert werden können. Für jedes Neuron kann es mehrere Gewichtungen geben, von denen jede auf einen entsprechenden Eingabestrom für Ausgangsdaten von Neuronen in vorherigen Schichten angewendet wird. Diese Gewichtungen sind Variablen, die geändert werden können, um eine Änderung des Ausgangs des neuronalen Netzes zu bewirken. Diese Gewichtungen können als Reaktion auf das Training geändert werden, so dass sie genauere Daten liefern. Als Reaktion auf das Training dieser Gewichtungen werden die geänderten Gewichtungen als „gelernt“ bezeichnet. Darüber hinaus können Größe und Konnektivität der Schichten von den typischen Eingabedaten für das Netz abhängen; allerdings können auch diese eine Variable sein, die während des Trainings geändert und gelernt werden kann, einschließlich der Verstärkung von Verbindungen.
-
Um das Netz zu trainieren, z.B. um Werte für die Gewichtungen zu lernen, wird diesen Gewichtungen ein Anfangswert zugewiesen. Diese Anfangswerte können im Wesentlichen zufällig sein; um jedoch das Training des Netzes zu verbessern, kann eine geeignete Initialisierung für die Werte angewandt werden, wie z.B. eine Xavier/Glorot-Initialisierung. Solche Initialisierungen können verhindern, dass Situationen eintreten, in denen die anfänglichen Zufallsgewichtungen zu groß oder zu klein sind und das neuronale Netz nie richtig trainiert werden kann, um diese anfänglichen Vorurteile zu überwinden. Dieser Initialisierungstyp kann die Zuweisung von Gewichtungen anhand einer Verteilung mit einem Mittelwert von Null und einer festen Varianz umfassen.
-
Nach dem Zuweisen der Gewichtungen können die Trainingsobjektdaten in das neuronale Netz 700 eingespeist oder eingegeben werden 710. Dies kann das Betreiben des neuronalen Netzes an bekannten entworfenen Schaltungen (und/oder Schaltungsteilen) und entsprechenden Schaltungsleistungen umfassen. Auf der Basis dieser Informationen wird ein Backpropagation-Optimierungsverfahren, z.B. anhand eines Gradientenabstiegs (z.B. stochastischer Gradientenabstieg) und Verlustfunktionen, auf das Netz angewandt, um vorhergesagte 720 Schaltungsleistungen mit erwarteten oder bekannten Schaltungsleistungen für diese(n) Schaltungsteil/Analogschaltung zu vergleichen 730. Die erwarteten oder bekannten Schaltkreisleistungen können z.B. mit Hilfe eines virtuellen Prüfstands ermittelt worden sein. Dabei können Algorithmen wie Mini-Batch-Gradientenabstieg, RMSprop, Adam, Adadelta und Nesterov verwendet werden. Auf diese Weise kann ermittelt werden, wie viel jeder unterschiedliche Punkt (Neuron) oder Pfad (zwischen Neuronen in nachfolgenden Schichten) im Netz zur Ermittlung einer falschen Bewertung beiträgt, was eine Bestimmung 740 erforderlicher Gewichtungen ermöglicht. Die Gewichtungen können dann gemäß dem berechneten Fehler angepasst 750 werden, zum Beispiel, um den Beitrag von Neuronen, die am meisten zu einer falschen Bestimmung beitragen, zu minimieren oder zu entfernen.
-
Nach einer Iteration des Trainings des Netzes mit verschiedenen Paaren von entworfenen Schaltungen (und/oder Schaltungsteilen) und entsprechenden Schaltungsleistungen können die Gewichtungen aktualisiert 750 werden, und dieser Vorgang kann sehr oft wiederholt werden. Um die Wahrscheinlichkeit eines Übertrainierens des Netzes zu verhindern, können Trainingsvariablen wie Lernrate und Momentum variiert und/oder auf einen ausgewählten Wert eingestellt werden. Darüber hinaus können Regularisierungstechniken wie L2 oder Dropout verwendet werden, die die Wahrscheinlichkeit verringern, dass verschiedene Schichten zu spezifisch für die Trainingsdaten übertrainiert werden, ohne dass sie allgemein auf andere, ähnliche Daten anwendbar sind. Ebenso kann eine Stapelnormalisierung verwendet werden, um das Training zu unterstützen und die Genauigkeit zu verbessern. Im Allgemeinen werden die Gewichtungen so angepasst, dass das Netz, wenn es erneut mit denselben Trainingsdaten betrieben wird, das erwartete Ergebnis liefern würde. Das Ausmaß, in dem dies der Fall ist, hängt jedoch von den Trainingsvariablen wie der Lernrate ab.
-
Es ist zu verstehen, dass eine Erhöhung der Tiefe neuronaler Netze zu Problemen beim Training führen kann, z.B. aufgrund von Problemen mit dem verschwindenden Gradienten, und dass dies auch zu langsameren Netzen führen kann. Die vorliegende Offenbarung kann jedoch die Bereitstellung eines Netzes mit erhöhter Tiefe und Genauigkeit ermöglichen, ohne die Fähigkeit, das Netz angemessen zu trainieren, zu opfern.
-
Die Tiefe des verwendeten Netzes kann so gewählt werden, dass ein Gleichgewicht zwischen Genauigkeit und der zum Bereitstellen einer Ausgabe benötigten Zeit entsteht. Eine größere Tiefe des Netzwerks kann die Genauigkeit erhöhen, aber auch die Zeit für die Ausgabe verlängern. Die Verwendung einer verzweigten Struktur (im Gegensatz zu einem neuronalen Faltungsnetz) kann ein ausreichendes Training des Netzes ermöglichen, wenn die Tiefe des Netzes zunimmt, was wiederum zu einer höheren Genauigkeit des Netzes führt.
-
Im Zusammenhang mit der vorliegenden Offenbarung ist zu verstehen, dass eine nicht erschöpfende Liste von Beispielen analoger Parameter, die die Basis der Kriterien bilden können, Folgendes umfasst: Rauschtoleranz; PSRR (Power Supply Rejection Ratio); Gleichtaktbereich - Eingang (Eingangs-CMR); Gleichtaktbereich - Ausgang (Ausgangs-CMR); Linearität; maximaler Offset; Bandbreite; minimale Anstiegsgeschwindigkeit; Eigenverzögerung; minimale Phasenspanne; Wirkleistungsaufnahme; statische Leistungsaufnahme; IP3-Punkt; Filtermittenfrequenz; Filter-Bandpassbereich; Lastsprungantwort; Leitungssprungantwort; Ausgangsgenauigkeit; Rauschzahl; Kalibrierungsbereich; Grundrauschen; SNR; ENOB; SINAD; Ausgangsfrequenzbereich; Jitter - ptp; Jitter - RMS; Ausgangswelligkeit ptp; gesamte harmonische Verzerrung; Anlaufzeit; Kanalisolierung; Referenzspannung; Verstärkungsfehler; Offsetfehler; Verstärkungsdrift.
-
Man wird auch verstehen, dass die Entwurfseinheiten (wie die primäre, sekundäre und tertiäre Entwurfseinheit) in Software oder Hardware implementiert sein können, beispielsweise als dedizierte Schaltungen. Die Entwurfseinheiten können zum Beispiel als Teil eines Computersystems implementiert werden. Das Computersystem kann einen Bus oder einen anderen Kommunikationsmechanismus zur Übermittlung von Informationsdaten, Signalen und Informationen zwischen verschiedenen Komponenten des Computersystems enthalten. Die Komponenten können eine Ein-/Ausgabe-(E/A) - Komponente enthalten, die eine Benutzeraktion (d.h. Absender, Empfänger, Dienstanbieter) verarbeitet, z.B. die Auswahl von Tasten auf einem/r Tastenfeld/Tastatur, die Auswahl einer oder mehrerer Schaltflächen oder Links usw., und ein entsprechendes Signal zum Bus sendet. Die E/A-Komponente kann auch eine Ausgangskomponente umfassen, wie z.B. eine Anzeige und eine Cursorsteuerung (wie z.B. eine Tastatur, ein Tastenfeld, eine Maus usw.). Ein Transceiver oder eine Netzwerkschnittstelle kann Signale zwischen dem Computersystem und anderen Geräten, z.B. einem anderen Benutzergerät, einem Händlerserver oder einem Dienstanbieterserver, über ein Netzwerk übertragen und empfangen. In einer Ausführungsform erfolgt die Übertragung drahtlos, obwohl auch andere Übertragungsmedien und -methoden geeignet sein können. Ein Prozessor, der ein Mikrocontroller, ein Digitalsignalprozessor (DSP) oder eine andere Verarbeitungskomponente sein kann, verarbeitet diese verschiedenen Signale, z.B. zur Anzeige auf dem Computersystem oder zur Übertragung zu anderen Geräten über eine Kommunikationsverbindung. Der Prozessor kann auch die Übertragung von Informationen, wie Cookies oder IP-Adressen, zu anderen Geräten steuern.
-
Die Komponenten des Computersystems können auch eine Systemarbeitsspeicher-Komponente (z.B. RAM), eine statische Speicherkomponente (z.B. ROM) und/oder ein Plattenlaufwerk (z.B. ein Solid-State-Laufwerk, eine Festplatte) umfassen. Das Computersystem führt spezifische Operationen durch den Prozessor und andere Komponenten aus, indem es eine oder mehrere Sequenzen von Anweisungen ausführt, die in der Systemarbeitsspeicher-Komponente enthalten sind.
-
Logik kann in einem computerlesbaren Medium codiert sein, das sich auf ein beliebiges Medium beziehen kann, das an der Bereitstellung von Anweisungen für einen Prozessor zur Ausführung beteiligt ist. Ein solches Medium kann viele Formen annehmen, einschließlich, aber nicht beschränkt auf, nichtflüchtige Medien, flüchtige Medien und Übertragungsmedien. In verschiedenen Ausführungsformen gehören zu nichtflüchtigen Medien optische oder magnetische Platten, zu den flüchtigen Medien dynamische Speicher, wie z.B. eine Systemarbeitsspeicher-Komponente, und zu den Übertragungsmedien Koaxialkabel, Kupferdraht und Lichtwellenleiter. In einer Ausführungsform ist die Logik in einem nichtflüchtigen, computerlesbaren Medium codiert. In einem Beispiel können Übertragungsmedien die Form von Schall- oder Lichtwellen annehmen, wie sie bei der Datenkommunikation über Radiowellen, optische und infrarote Wellen entstehen.
-
Zu den gebräuchlichen Formen von computerlesbaren Medien gehören beispielsweise Disketten, flexible Platten, Festplatten, Magnetbänder, andere magnetische Medien, CD-ROMs, andere optische Medien, Lochkarten, Papierbänder, andere physikalische Medien mit Lochmustern, RAM, PROM, EPROM, FLASH-EPROM, andere Arbeitsspeicherchips oder -kassetten oder andere Medien, die von einem Computer gelesen werden können.
-
In verschiedenen Ausführungsformen der vorliegenden Offenbarung kann die Ausführung von Befehlssequenzen zum Implementieren der vorliegenden Offenbarung von einem Computersystem durchgeführt werden. In verschiedenen anderen Ausführungsformen der vorliegenden Offenbarung können mehrere Computersysteme 600, die über eine Kommunikationsverbindung mit einem Netzwerk (z.B. LAN, WLAN, PTSN und/oder verschiedene andere verdrahtete oder drahtlose Netzwerke, einschließlich Telekommunikations-, Mobil- und Mobiltelefonnetzwerke) gekoppelt sind, Befehlssequenzen zum Implementieren der vorliegenden Offenbarung in Koordination miteinander ausführen.
-
Man wird auch verstehen, dass Aspekte der vorliegenden Offenbarung mittels Hardware, Software oder Kombinationen von Hardware und Software implementiert werden können. Gegebenenfalls können die verschiedenen hierin beschriebenen Hardware-Komponenten und/oder Software-Komponenten auch zu Verbundkomponenten kombiniert werden, die Software, Hardware und/oder beides umfassen, ohne vom Wesen der vorliegenden Offenbarung abzuweichen. Gegebenenfalls können die verschiedenen hier dargelegten Hardware- und/oder Software-Komponenten in Subkomponenten aufgeteilt werden, die Software, Hardware oder beides umfassen, ohne vom Rahmen der vorliegenden Offenbarung abzuweichen. Darüber hinaus ist es denkbar, dass Software-Komponenten als Hardware-Komponenten implementiert werden und umgekehrt.
-
Software gemäß der vorliegenden Offenbarung, wie Programmcode und/oder Daten, kann auf einem oder mehreren computerlesbaren Medien gespeichert werden. Es wird auch in Betracht gezogen, dass die hierin beschriebene Software mit einem oder mehreren Universal- oder Spezialcomputern und/oder Computersystemen, vernetzt und/oder anderweitig, implementiert werden kann. Gegebenenfalls kann die Reihenfolge verschiedener hierin beschriebener Schritte geändert, zu Verbundschritten kombiniert und/oder in Teilschritte aufgeteilt werden, um die hierin beschriebenen Merkmale bereitzustellen.
-
Die verschiedenen hier beschriebenen Merkmale und Schritte können als Systeme implementiert werden, die einen oder mehrere Speicher, die verschiedene hier beschriebene Informationen speichern, und einen oder mehrere Prozessoren umfassen, die mit den ein oder mehreren Speichern und einem Netzwerk verbunden sind, wobei die ein oder mehreren Prozessoren so betrieben werden können, dass sie die hier beschriebenen Schritte ausführen, als nichtflüchtiges maschinenlesbares Medium, das mehrere maschinenlesbare Anweisungen umfasst, die bei Ausführung durch einen oder mehreren Prozessoren ausgelegt sind zum Bewirken, dass die ein oder mehreren Prozessoren ein Verfahren durchführen, das die hierin beschriebenen Schritte umfasst, und Verfahren, die von einem oder mehreren Geräten, wie einem Hardware-Prozessor, einem Benutzergerät, einem Server und anderen hierin beschriebenen Geräten, durchgeführt werden.
-
Im Zusammenhang mit der vorliegenden Offenbarung werden für die Fachperson andere Beispiele und Variationen der hierin beschriebenen Vorrichtungen und Verfahren offensichtlich sein.