-
Die
vorliegende Erfindung bezieht sich auf ein Prüfen von Schaltungsentwürfen, insbesondere
des Entwurfs von integrierten Schaltungen. Insbesondere bezieht
sich die Erfindung auf ein Verfahren und eine Vorrichtung zum Prüfen von
asynchronen Schaltungsentwürfen,
die unter Verwendung einer Hardwarebeschreibungssprache (HDL) ausgedrückt sind.
-
Die
Masse von anwendungsspezifischen integrierten Schaltungen (ASICs)
werden heute unter Verwendung einer Hardwarebeschreibungssprache
(HDL), wie z. B. Verilog oder VHDL, entworfen. Entwürfe, die mit
HDL codiert sind, sind von spezifischen ASIC-Lieferanten, Bibliotheken
und Werkzeugen unabhängig.
Diese Unabhängigkeit
macht die Entwürfe
portabel und wiederverwendbar. In vielen Fällen kann der Entwurf verschiedene
Teilkomponenten oder Module aufweisen, die neu sein können oder
die zuvor viele Male bei anderen Entwürfen verwendet worden sind.
Es kann jedoch sein, dass die verschiedenen Module nicht alle in
dem gleichen Taktbereich wirksam sind. Zum Beispiel kann ein Speicherelement
(z. B. ein Flipflop) bei einem Modul von einer anderen Quelle getaktet
werden als ein Speicherelement bei einem zweiten Modul. Zum Beispiel kann
ein eingebetteter Mikroprozessor in einer ASIC mit 33 MHz getaktet
werden, und eine Schnittstellenkomponente, wie z. B. eine Lokales-Netz-
(LAN-) Steuerung, kann mit 10 MHz getaktet werden. Falls Signale
von einem Modul zum anderen geleitet werden, muss darauf geachtet
werden, die Signale von der Quelle mit dem Taktbereich des Ziels
zu synchronisieren. Dies ist in 1 gezeigt,
bei der es sich um ein schematisches Blockdiagramm einer Schaltung
handelt, die eine Synchronisiereinrichtung 20 zum Synchronisieren
von Signalen zwischen verschiedenen Schaltungselementen, z. B. einem
Mikroprozessor 10 und einer LAN-Steuerung 30,
umfasst.
-
Schaltungen,
die nicht in Synchronisation betrieben werden, werden als asynchrone
Schaltungen bezeichnet. Obwohl asynchrone Schaltungen absichtlich
in verschiedene Entwürfe
eingeführt
werden können,
ist es in hohem Maße
unerwünscht,
einen Entwurf zu erzeugen, der ungeplante asynchrone Schaltungen
umfasst. Falls dementsprechend die Synchronisation von Signalen,
die sich zwischen Taktbereichen bewegen, übersehen wird, können Zeitgebungsprobleme
in Form von Einrichtungs- oder Halteverletzungen auftreten, was
zu metastabilen Zuständen
bei Flipflops führt,
die bei dem Entwurf verwendet werden. Dieser Zustand kann verschiedene
Funktionsprobleme bei einem Entwurf verursachen, wie z. B. Datenverfälschung,
oder derselbe kann bewirken, dass Zustandsmaschinen hängen bleiben
oder zu unzulässigen
Zuständen übergehen. Bei
Entwürfen,
die eine große
Anzahl von Modulen oder Komponenten aufweisen, könnte es Hunderte von Signalen
geben, die eine Synchronisation benötigen. Somit nimmt die Möglichkeit
des Übersehens
eines Signals, das eine Synchronisation benötigt, in dem Maße zu, in
dem die Größe eines
Entwurfs zunimmt.
-
Es
gibt mehrere bekannte Verfahren zum Sicherstellen, dass ein Entwurf
frei von jeglichen ungeplanten asynchronen Schaltungen ist. Ein
Verfahren liefert klar definierte Schnittstellen zwischen Modulen
und veranlasst die Module, sich an strenge Synchronisationsanforderungen
zu halten. Diese Technik erfordert eine gut verstandene und dokumentierte
Schnittstelle oder die genaue Kenntnis des Entwurfs und aller anderen Entwürfe, die
mit dem Entwurf eine Schnittstelle bilden können, seitens des Entwicklers.
Dabei handelt es sich um einen derzeit bevorzugten Entwurfsansatz,
derselbe weist jedoch seine Nachteile auf. Zum Beispiel bevorzugt
dieser Ansatz gut dokumentierte Spezifikationen. Falls eine Dokumentation
nicht vorbereitet oder vernachlässigt
ist, ist der im Vorhergehenden genannte Ansatz weder umfassend noch
vollständig.
-
Aufgrund
der gesteigerten Fähigkeit
von Systemen, Funktionen in ASICs zu integrieren, werden Schaltungsentwürfe komplexer
und viel größer. Entwurfsteams
können
aus mehreren Entwicklern bestehen, und deshalb kann es für einen
einzelnen Entwickler schwierig sein, eine genaue Kenntnis aller
Module bei einem Entwurf zu erreichen. Da es nicht mehr üblich und
auch nicht praktisch ist, dass nur ein einziger Entwickler an einer
ASIC arbeitet, muss das Wissen über
einen Entwurf so portabel wie der Entwurf selbst sein. Falls ein Entwickler
nicht mehr zur Beratung zur Verfügung
steht, geht die genaue Kenntnis des Entwurfs verloren und falsche
Annahmen können
bezüglich
des Entwurfs gemacht werden. Dieser Ansatz eignet sich auch nicht
gut für
die Verwendung von geistigem Eigentum Dritter, das zur Verwendung
bei einem größeren Entwurf
verfügbar
sein kann, da das Wissen über
dieses geistige Eigentum Dritter eventuell nicht mehr für Entwurfszwecke zur
Verfügung
steht.
-
Ein
weiterer Ansatz zum Prüfen
eines Entwurfs auf asynchrones Verhalten hin liefert eine strenge
Entwurfsprüfung
durch Entwickler, um übersehene
Elemente bei Synchronisationsverfahren und -praktiken zu erfassen.
Dieser Ansatz ist von seiner Beschaffenheit her manuell und arbeitsintensiv
und aufgrund der mangelnden Vertrautheit eines Entwicklers mit einem
Entwurf fehleranfällig.
-
Ein
sekundärer
Faktor bei der zunehmenden Fehlerwahrscheinlichkeit ist die Komplexität des Entwurfs
selbst und die entsprechende Dateistruktur, die dem Entwurf zugeordnet
ist. Wie es im Vorhergehenden erörtert
ist, können
ASIC-Entwürfe Hunderte
von Modulen aufweisen, die dazu neigen, hierarchisch angeordnet
zu sein. 2 ist ein schematisches Blockdiagramm
eines ASIC-Entwurfs, das die hierarchische Anordnung von Modulen
in dem Entwurf zeigt. Ein Grundproblem beim Prüfen auf eine asynchrone Schaltungsanordnung
bei einem Entwurf hin besteht darin, dass eine Hierarchie zusätzliche
Komplexität
in den Entwurf einbringt. Ein Verfolgen von Signalen von einer Zielvorrichtung
auf Ebene 2 in Verzweigung A (level2a.v) zu einer Quellenvorrichtung
auf Ebene 3 in Verzweigung B (nicht gezeigt) erfordert, dass ein
Entwickler viele Dateien abtastet, wobei sowohl Zieltakt als auch
Daten verfolgt werden.
-
In
dem Maße,
in dem die Anzahl von Entwurfsschichten und die Tiefe der Hierarchie
zunehmen, wird der Verifizierungsprozess problematischer. Die Aufgabe
wird ferner verkompliziert, falls sich die Signalnamen des Taktes
oder der Daten von einem Modul zum nächsten verändern. Zum Beispiel ist es
in der HDL-Sprache zulässig
(und in einigen Fällen
nötig),
ein Signal z. B. auf einer Ebene CLK 33 und auf einer anderen Ebene CLK
zu nennen.
-
Es
wäre vorteilhaft,
ein verbessertes Verfahren und eine verbesserte Vorrichtung zum
Prüfen
von asynchronen HDL-Schaltungsentwürfen zu
schaffen.
-
Der
Artikel „Detection
and Identification of Asynchronous Logic in a Synchronous Environment" IBM technical disclosure
bulletin, US, IBM corp. New York, Bd. 34, Nr. 11, 1. April 1992
(1992-04-01), S. 462–464, XP000303329
ISSN: 0018–8689
offenbart eine Softwareeinrichtung, um bei der Erfassung und Identifikation einer
asynchronen Logik in einer synchronen Umgebung durch ein Liefern
eines Prozesses und eines Algorithmus zu helfen, der garantiert,
dass alle Grenzen zwischen asynchroner und synchroner Logik identifiziert werden.
Bei dieser Identifikation wird ein Bericht erzeugt, um alle möglichen
Problem-Latches anzuzeigen, die an dem Entwurf beteiligt sind.
-
Gemäß einem
ersten Aspekt der vorliegenden Erfindung wird eine Vorrichtung geliefert,
die angepasst ist, um einen Entwurf für eine integrierte Schaltung,
der in einem Hardwarebeschreibungssprach- (HDL-) Code ausgedrückt ist,
auf asynchrone Wege hin zu überprüfen, wobei
der Entwurf für
eine integrierte Schaltung Module aufweist, wobei jedes Modul Taktsignaleingänge, Moduleingangssignale,
Modulaus gangssignale, interne Signale aufweist, wobei es sein kann,
dass die verschiedenen Module nicht alle in dem gleichen Taktbereich wirksam
sind, wobei die Vorrichtung folgende Merkmale aufweist:
eine
Signaltabellenerzeugungseinrichtung, die angepasst ist, um eine
Eingangs-HDL-Quellendatei als einen Strom von Tokens syntaktisch
zu analysieren, wobei neue Signale, die in dem Strom erfasst werden,
zu einer Signaltabelle hinzugefügt
werden, wobei für
jedes hinzugefügte
Signal alle Speisungssignale und der Taktsignalbereich für dieses
Signal gespeichert werden;
eine Signalbereichauflösungseinrichtung,
die angepasst ist, um die Signaltabelle in mehreren Durchgängen zu verarbeiten,
bis ein Logikkegel hinter jedem Signal vollständig bestimmt ist, durch ein
Auflösen
der Taktsignalbereiche aller Speisungssignale zu jedem Signal, und
um eine Liste zu erzeugen, die die Taktsignalbereiche aller Speisungssignale
speichert;
eine Bereichsverifizierungseinrichtung, die angepasst
ist, um den Taktsignalbereich jedes Flipflops, das die Speisungssignale
verwendet, mit dem Taktsignalbereich der Speisungssignale dazu zu
vergleichen, und um jedes Flipflop mit einem Code zu etikettieren,
der das Ergebnis des Vergleichs beschreibt; und
eine Berichterzeugungseinrichtung,
die angepasst ist, um Berichte abhängig von Eingangsparametern
in einem ausgewählten
Ausgangsformat anzuzeigen.
-
Gemäß einem
zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Durchführen
einer Entwurfsprüfung
eines Entwurfs für
eine integrierte Schaltung, der in einem Hardwarebeschreibungssprach- (HDL-)
Code ausgedrückt
ist, bezüglich
eines asynchronen Wegs geliefert, wobei der Entwurf für eine integrierte
Schaltung Module aufweist, wobei jedes Modul Taktsignaleingänge, Moduleingangssignale,
Modulausgangssignale, interne Signale aufweist, wobei es sein kann,
dass die verschiedenen Module nicht alle in dem gleichen Taktbereich
wirksam sind, wobei das Verfahren folgende Schritte aufweist:
Erzeugen
einer Signaltabelle durch ein syntaktisches Analysieren einer Eingangs-HDL-Quellendatei
in einen Strom von Tokens, Erfassen neuer Signale in diesem Strom
von Tokens, und Hinzufügen
von erfassten Signalen zu der Signaltabelle, wobei für jedes
hinzugefügte
Signal alle Speisungssignale und der Taktsignalbereich für dieses
Signal gespeichert werden;
Auflösen eines Signalbereichs durch
ein Verarbeiten der Signaltabelle in mehreren Durchgängen, bis
ein Logikkegel hinter jedem Signal vollständig bestimmt ist, durch ein
Auflösen
der Taktsignalbereiche aller Speisungssignale zu jedem Signal, und
Erzeugen einer Liste, die die Taktsignalbereiche aller Speisungssignale umfasst;
Verifizieren
eines Bereichs durch ein Verwenden der vollständigen Signaltabelle, um den
Taktsignalbereich der Speisungssignale mit dem Taktsignalbereich
jedes Flipflops, das die Speisungssignale verwendet, zu vergleichen,
und Etikettieren jedes Flipflops mit einem Code, der das Ergebnis
des Vergleichs beschreibt; und
Erzeugen eines Berichts.
-
Diese
Erfindung liefert ein Werkzeug, das den Entwurfsprüfungsprozess
automatisiert und beschleunigt. Diese Erfindung ermöglicht es
Entwicklern, eine umfassende Entwurfsprüfung des HDL-Codes des Entwurfs
auf asynchrone Wege hin sehr früh
in dem Entwurfsprozess durchzuführen.
Das Werkzeug ist bezüglich einer
gesamten Hierarchie oder eines beliebigen Teilblocks des Entwurfs
wirksam. Filter sind bereitgestellt, um es dem Benutzer zu ermöglichen,
bekannte und erwünschte
Synchronisationsschaltungen von der Ausgabe, die durch das Werkzeug
erzeugt wird, auszuklammern. Das Werkzeug liefert eine Ausgabe,
die eines von zwei Formaten annehmen kann, d. h. die Ausgabe kann
in einer tabellarischen Form durch einen hierarchischen Signalnamen
präsentiert
werden, oder dieselbe kann in einer graphischen, schematischen Blockdiagrammform
präsentiert
werden.
-
In
Betrieb führt
das Werkzeug eine erschöpfende
Durchsuchung aller Schaltungen durch und identifiziert jegliches
asynchrone Verhalten. Dies erzeugt einen Entwurf höherer Qualität, was durch
ein Verringern von ASIC-Neuentwürfen,
die sich aus Entwurfszeitgebungsfehlern ergeben, eine schnellere
Vermarktungszeit ermöglicht.
-
Das
Werkzeug weist eine einfache Benutzerschnittstelle auf. Die Benutzerschnittstelle
erfordert nur zwei Benutzereingaben und liefert mehrere Programmverhaltensmodifizierungsoptionen.
Die zwei obligatorischen Felder identifizieren den Ort aller Entwurfsdateien
und das Modul, bei dem das Werkzeug seine Analyse beginnen soll.
-
Das
Werkzeug beginnt seine Analyse auf der Ebne des Moduleingangs und
durchläuft
den Entwurf von diesem Punkt die Hierarchie abwärts zu allen Endmodulen.
-
1 ist
ein schematisches Blockdiagramm einer Schaltung, die eine Synchronisiereinrichtung
zum Synchronisieren von Signalen zwischen verschiedenen Schaltungselementen
umfasst;
-
2 ist
ein schematisches Blockdiagramm eines ASIC-Entwurfs, das die hierarchische Anordnung von
Modulen in dem Entwurf zeigt;
-
3 ist
ein Flussdiagramm eines Verfahrens und einer Vorrichtung zum Prüfen von
asynchronen Schaltungsentwürfen,
die unter Verwendung der Hard warebeschreibungssprache (HDL) gemäß der Erfindung ausgedrückt sind;
-
4 ist
ein Flussdiagramm einer ersten Phase des Verfahrens und der Vorrichtung
zum Prüfen
von asynchronen Schaltungsentwürfen
gemäß der Erfindung;
-
5 ist
ein Flussdiagramm einer zweiten Phase des Verfahrens und der Vorrichtung
zum Prüfen
von asynchronen Schaltungsentwürfen
gemäß der Erfindung;
-
6 ist
ein Flussdiagramm einer dritten Phase des Verfahrens und der Vorrichtung
zum Prüfen
von asynchronen Schaltungsentwürfen
gemäß der Erfindung;
-
7 ist
ein Flussdiagramm einer vierten Phase des Verfahrens und der Vorrichtung
zum Prüfen
von asynchronen Schaltungsentwürfen
gemäß der Erfindung;
und
-
8 ist
eine schematische Darstellung einer graphischen Benutzerschnittstelle
für das
Verfahren und die Vorrichtung zum Prüfen von asynchronen Schaltungsentwürfen gemäß der Erfindung.
-
Die
Erfindung liefert ein Werkzeug, das den ASIC-Entwurfsprüfungsprozess automatisiert
und beschleunigt. Die Erfindung ermöglicht es Entwicklern, eine
umfassende Entwurfsprüfung
des HDL-Codes des Schaltungsentwurfs auf asynchrone Wege hin sehr
früh in
dem Entwurfsprozess durchzuführen.
Das Werkzeug ist entweder bezüglich
einer gesamten Hierarchie oder bezüglich eines beliebigen Teilblocks
des Schaltungsentwurfs wirksam. Filter sind bereitgestellt, um es
dem Benutzer zu ermöglichen,
bekannte und erwünschte
Synchronisationsschaltungen von der Ausgabe, die durch das Werkzeug
erzeugt wird, auszuklammern. Das Werkzeug erzeugt eine Ausgabe,
die eines von zwei Formaten annehmen kann, d. h. die Ausgabe kann
in einer tabellarischen Form durch einen hierarchischen Signalnamen
(siehe unten) präsentiert
werden, oder dieselbe kann in einer beliebigen gewünschten
graphischen schematischen Blockdiagrammform (nicht gezeigt) unter
Verwendung bekannter Anzeigetechniken präsentiert werden.
-
In
Betrieb führt
das Werkzeug eine erschöpfende
Durchsuchung aller Schaltungen durch und identifiziert jegliches
asynchrone Verhalten. Dies erzeugt einen Entwurf höherer Qualität, was durch
ein Verringern von ASIC-Neuentwürfen,
die sich aus Entwurfszeitgebungsfehlern ergeben, eine schnellere
Vermarktungszeit ermöglicht.
-
Die
Benutzerschnittstelle erfordert zwei Dateneingaben und liefert zusätzliche
optionale Felder. Die zwei obligatorischen Felder identifizieren
den Ort aller Entwurfsdateien und das Modul, bei dem das Werkzeug seine
Analyse beginnen soll. Das Werkzeug beginnt seine Analyse auf der
Ebene des Moduleingangs und durchläuft den Entwurf von diesem
Punkt die Hierarchie abwärts
zu allen Endmodulen.
-
Die
folgende Erörterung
identifiziert zusammen mit den 3–7 den
logischen Fluss der hier beschriebenen Erfindung, d. h. der Asynchroner-HDL-Entwurf-Prüfungseinrichtung.
Wie es in 3 gezeigt ist, kann der Betrieb
der Entwurfsprüfungseinrichtung
in vier Hauptphasen unterteilt werden, und zwar Signaltabellenerzeugung
(100), Signalbereichsauflösung (110), Bereichsverifizierung
(120) und Berichterzeugung (130). Jede Phase ist
im Folgenden beschrieben.
- • Phase I. Signaltabellenerzeugung
(siehe 4) – Während dieser
Phase wird eine Eingangs-HDL-Quellendatei
(220) als ein Strom von Tokens (200) syntaktisch
analysiert. Wenn neue Signale erfasst werden (210), werden
dieselben zu einer Signaltabelle (240) hinzugefügt (230)
und während
der nachfolgenden Ausführung
des Programms modifiziert. Modulinstanzierungen werden bearbeitet,
wenn dieselben aufgefunden werden.
- • Phase
II. Signalbereichsauflösung
(siehe 5) – In
dieser Phase wird die Signaltabelle (240) in mehreren Durchgängen verarbeitet
(300), bis der Logikkegel hinter jedem Signal vollständig bestimmt
ist (330). Eine Liste, die Speisungssignale (340)
für jedes
Signal umfasst, wird erzeugt.
- • Phase
III. Bereichsverifizierung (siehe 6) – Die vollständige Signaltabelle
(240) wird verwendet, um den Bereich der Speisungssignale
(340) mit dem Bereich jedes Flipflops, das dieselben verwendet,
zu vergleichen (400). Jedes Signal wird mit einem Code,
der die Ergebnisse der Verarbeitung beschreibt, wie folgt etikettiert
(420)
- – 0) – kombinatorische
Logik, die von mehreren Quellen gespeist wird;
- – 1) – keine
Bereichsverletzungen (doppelsync Flop);
- – 2) – Eingangssignal
von externer Quelle;
- – 3) – mehrere
Takte in Speisungssignal;
- – 4) – nicht
in der Lage, Speisungssignal(e) aufzulösen;
- – 5) – Speisungseinrichtung
in einem Bereich, Floptakt in einem anderen Bereich (Bereichskreuzung);
- – 6) – unbekanntes
Problem mit Signaltabelle (ungültiger
Bereichseintrag);
- – X) – unvollständige Informationen
(nicht in der Lage, Bereiche zu prüfen); oder
- – S) – Signal
ausgelassen (Signal nicht für
Bereichskreuzung berücksichtigt).
- • Phase
IV. Berichterzeugung (siehe 7 und 8) – Abhängig von
den Eingangsparametern kann eines von mehreren möglichen Ausgangsformaten zur
Anzeige (510) ausgewählt
werden (500). Diese Formate umfassen:
- – ein
textbasiertes, koloriertes HTML-Format (Voreinstellung):
- – eine
Auflistung aller Signale in einem spezifizierten Bereich;
- – eine
Auflistung aller Signale in einem spezifizierten Modul;
- – eine
hierarchische Anzeige des Logikkegels hinter einem spezifizierten
Signal;
- – eine
Liste aller Module, die durch ein spezifiziertes Rücksetzsignal
rückgesetzt
werden;
- – eine
Auflistung von erfassten potentiellen Rücksetzproblemen;
- – ein
Speicherauszug der Signalinformationsdatenbank, die während einer
Programmausführung
kompiliert wird;
- – ein
Nur-Text-Diagramm, das Problemsignale und ihre Speisungseinrichtungen
zeigt;
- – ein
Schlüsselwortfrequenzdiagramm;
und/oder
- – ungültige oder
fehlende Rücksetzsignale.
-
Programmoptionen.
-
Die
folgenden Optionen sind bei dem derzeit bevorzugten Ausführungsbeispiel
der Erfindung bereitgestellt. Es sei darauf hingewiesen, dass zusätzliche
Optionen als eine Frage der Wahl für einen Fachmann aufgenommen
werden können.
- • Alle
Signale anzeigen: Ein Auswählen
dieser Optionen zwingt die Erfindung, alle Signale, die in einer
SigInfo-Datenbank enthalten sind, zusammen mit einer Beschreibung
des Problemcodes, der jedem Signal zugeordnet ist, anzuzeigen. Das
Wählen
dieser Option ist identisch mit einem Auswählen aller Optionen in der
Gruppe von Ankreuzkästchen,
die unmittelbar unter derselben eingerückt sind, mit Ausnahme von „etikettierte
synchrone Flops ausschließen" (siehe 8,
im Folgenden beschrieben);
- • Doppelsynchrone
Flops anzeigen: Wenn diese Option ausgewählt wird, werden Signale, die
vollständig synchronisiert
sind (keine Gefahr von Bereichskreuzungsverletzungen), angezeigt;
- • Bereichskreuzung
anzeigen: Per Voreinstellung ausgewählt. Wenn diese Option ausgewählt wird,
werden bekannte Bereichskreuzungsverletzungen angezeigt. Falls ein
Signal das Ausgangssignal der ersten Synchronisationsstufe ist,
wird es trotzdem als eine Bereichskreuzung markiert, es sei denn,
sein Name ist mit einem benutzerdefinierten Filtermuster (d. h.
sync) präfixiert
und die Option „etikettierte
synchrone Flops ausschließen" ist ausgewählt;
- • Etikettierte
synchrone Flops ausschließen:
Diese Option ist ein Modifikationsmittel der Option „Bereichskreuzung
anzeigen". Wenn
diese Option ausgewählt
wird, werden Signale, die normalerweise als bereichskreuzungsverletzend
betrachtet würden,
ignoriert, vorausgesetzt, ihr Name ist mit einem benutzerdefinierten
Filtermuster präfixiert.
(Mehrere Filtermuster können
definiert sein, wobei in diesem Fall das Signal nicht markiert wird,
wenn Filter übereinstimmen);
- • Signale
mit Mehrtaktbereicheingängen
anzeigen: Wenn dieselbe ausgewählt
wird, zeigt diese Option synchrone Signale an, die Eingangssignale
aufweisen, die in unterschiedlichen Taktbereichen liegen;
- • Kombinatorische
Signale anzeigen: Diese Option erzwingt die Anzeige von nicht synchronen
Signalen, die sich in einem einzigen Taktbereich befinden. Falls
ein kombinatorisches Signal Speisungssignale aufweist, die in mehr
als einem Bereich erzeugt werden, wird das Ausgangssignal des Signals
durch die Option „Kombinatorische
Logik anzeigen, die durch Signale in unterschiedlichen Bereichen
gespeist wird" gesteuert
(im Folgenden erörtert);
- • Nicht
aufgelöste
Signale anzeigen: Per Voreinstellung ausgewählt. Wenn diese Option ausgewählt wird, werden
Signale angezeigt, die durch die Erfindung nicht vollständig bestimmt
worden sind. Dies erfolgt nur, falls notwendige Informationen nicht
verfügbar
sind;
- • Externe
Eingangssignale anzeigen: Wenn ein Signal in das Modul der höchsten Ebene
eintritt, wird dasselbe als eine Eingabe von der Außenwelt
betrachtet und es werden keine Annahmen bezüglich desselben vorgenommen.
Wenn diese Option ausgewählt
wird, werden alle derartigen Eingangssignale gezeigt;
- • Signale
anzeigen, die nicht auf Bereichskreuzungen hin geprüft werden:
Bestimmte Signale werden durch die Erfindung nicht auf Bereichskreuzungsverletzungen
hin geprüft,
da dies nicht sinnvoll wäre.
Diese Signale umfassen externe Eingangssignale und kombinatorische
Logik. Wenn diese Option ausgewählt
wird, werden diese Signale angezeigt und dementsprechend etikettiert;
- • Eine
kombinatorische Logik anzeigen, die durch Signale in unterschiedlichen
Bereichen gespeist wird: Wenn diese Option ausgewählt wird,
werden Ausgangssignale von einer kombinatorischen Logik, deren Eingangssignale
mehr als eine Taktquelle (oder eine Mischung von synchronen und
asynchronen Signalen) enthalten, angezeigt; und
- • Alle
Bereichsnamen anzeigen: Ein Auswählen
dieser Option führt
dazu, dass die Erfindung eine Liste aller aufgefundenen Taktbereiche
und der Signale, die in denselben liegen, anzeigt.
-
8 ist
eine schematische Darstellung einer graphischen Benutzerschnittstelle
für das
Verfahren und die Vorrichtung zum Prüfen von asynchronen Schaltungsentwürfen gemäß der Erfindung. 8 zeigt
verschiedene Anzeigeoptionen, die einem Benutzer während des
Betriebs der Erfindung (wie im Vorhergehenden erörtert) präsentiert werden. Es sei darauf
hingewiesen, dass das tatsächliche
Erscheinungsbild der Benutzerschnittstelle sowie die bestimmten
Anzeigeoptionen, die dem Benutzer präsentiert werden, für einen
Fachmann eine Frage der Wahl sind.
-
Befehlszeilenformat.
-
Das
derzeit bevorzugte Befehlszeilenformat, das bei der Erfindung verwendet
wird, sieht wie folgt aus:
DDr sourcefilepath modulename [-all_pcodes|-domain_x|-double_sync|-keyfreq_multi_clk_in|-show_domains|-no_syncs|-resets|-show_d[domain]|-show_mod[mod]|-show_reset[signals]|-show_sig[signal]|-sig_tab|-unresolved|-graphic
-
Beispiele für Befehlszeilen.
-
- • DDr
/source/ verilog.v -graphic -all_pcodes: Eine HTML-Auflistung aller
Flipflops erzeugen, wobei der Logikkegel hinter jedem Flipflop gezeigt
wird. Das Flipflop-Signal ist mit einer Graphik hypertextverknüpft, die die
Logikwolke mit Speisungseinrichtungen zu dem Flipflop zeigt.
- • DDr
/source/ verilog.v -sigtab -keyfreq -reset: Erzeugt eine Textauflistung
von Flipflops, die Bereichskreuzungen aufweisen können. Außerdem wird
die erzeugte Signaltabelle zusammen mit einer Verilog-Schlüsselwortfrequenztabelle
angezeigt.
-
Musterausgabe:
-
- → Q5
(clk2) [n_reset]
- comb1
- → Q2
(clk1)
- D1 (Extern)
- Q3 (clk2)
- D3 (Extern)
-
Schlüsselwortzuweisungen.
-
Tabelle
1 unten zeigt Schlüsselwortzuweisungen
für ein
bevorzugtes Ausführungsbeispiel
der Erfindung.
-
Tabelle
1. Schlüsselwortzuweisungen
-
BEISPIEL 1
-
Im
Folgenden werden ein Verilog-Eingangscodebeispiel, die Ausgabe,
die während
der Ausführung durch
die Erfindung erzeugt wird, und die erzeugte Tabelle sowie die Art,
wie die Daten aus der Tabelle erzeugt werden, geliefert.
-
-
-
-
-
Beispiel für eine Ausgabe
während
einer Programmausführung.
-
- Verarbeitung Befehlszeile ...
- Ausgewählte
Optionen:
-all_pcodes
-show_d[clk2]
-show_mod[ddr]
-show_sig[out]
-show_reset[n_reset]
-resets
-sig_tab
-keyfreq
- Start Phase I (syntaktisches Analysieren Quellendatei)...
- Syntaktisches Analysieren (Top)/mnt/hci4/test/ddr.v
- Verarbeitung Modul ddr...
- Warnung: Ungültige
Rücksetzung
bei /mnt/hci4/test/ (ddr).
- Erwartet n_reset, gefunden Q3
- Modul ddr verarbeitet.
- Phase I abgeschlossen. Start Phase II
- Taktbereiche auflösen
- Start Durchgang 1
- Q1 Speisungsbereich von (!) zu (Extern) geändert
- Q2 Speisungsbereich von (!) zu (Extern) geändert
- Q3 Speisungsbereich von (!) zu (Extern) geändert
- Q4 Speisungsbereich von (!) zu (clk1) geändert
- comb1 Speisungsbereich von (!) zu (MULT) geändert
- comb2 Speisungsbereich von (!) zu (clk1) geändert
- new_Q9 Speisungsbereich von (!) zu (MULT) geändert
- out Speisungsbereich von (!) zu (MULT) geändert
- Start Durchgang 2
- Q5 Speisungsbereich von (!) zu (MULT) geändert
- Q6 Speisungsbereich von (!) zu (MULT) geändert
- Q7 Speisungsbereich von (!) zu (clk1) geändert
- Q8 Speisungsbereich von (!) zu (clk1) geändert
- Q9 Speisungsbereich von (!) zu (MULT) geändert
- Start Durchgang 3
- Phase II abgeschlossen. Start Phase III
- (Suche nach Bereichskreuzungen)...
- Q1 – unbekannter
Bereich (externes Signal)
- Q2 – unbekannter
Bereich (externes Signal)
- Q3 – unbekannter
Bereich (externes Signal)
- Q5 – mehrere
Takte in Speisungssignal
- Q6 – mehrere
Takte in Speisungssignal
- Q8 – Speisungseinrichtung
in einem Bereich, Flop in einem anderen
- Q9 – mehrere
Takte in Speisungssignal
- Phase III abgeschlossen.
Signal:
D1 | Auflösungscode:
S |
Signal:
Q1 | Auflösungscode:
2 |
Signal:
Q2 | Auflösungscode:
2 |
Signal:
Q3 | Auflösungscode:
2 |
Signal:
Q4 | Auflösungscode:
1 |
Signal:
Q5 | Auflösungscode:
3 |
Signal:
Q6 | Auflösungscode:
3 |
Signal:
Q7 | Auflösungscode:
1 |
Signal:
Q8 | Auflösungscode:
5 |
Signal:
Q9 | Auflösungscode:
3 |
Signal:
clk1 | Auflösungscode:
S |
Signal:
clk2 | Auflösungscode:
S |
Signal:
comb1 | Auflösungscode:
0 |
Signal:
comb2 | Auflösungscode:
S |
Signal:
n_reset | Auflösungscode:
S |
Signal:
new_Q9 | Auflösungscode:
0 |
Signal:
out | Auflösungscode:
0 |
-
Ausgabe der Tabellenerzeugung.
-
Tabelle
2 unten ist eine Beispielsausgangstabelle, die durch die Erfindung
erzeugt wird. Tabelle
2. Beispielsausgabe der Tabellenerzeugung
- * MC = mehrere Takte Fertig.
-
Analyse der Beispielsausgabe.
-
Es
wurde festgestellt, dass der Taktbereich des Q8-Flopausgangssignals während Phase
I der Verarbeitung clk2 war. Auch wurde während Phase I comb2 als die
einzige Speisungseinrichtung zu Q8 erfasst – und Q2 und Q4 waren Speisungen
zu comb2.
-
Während Phase
II wurden alle Speisungssignalbereiche aufgelöst (d. h. comb2 verwendet Q2
und Q4, die beide durch clk1 getaktet werden, also wird comb2 als
in dem clk1-Bereich befindlich betrachtet). Da die einzige Speisungseinrichtung
in Q8 comb2 ist, wird clk1 als der Speisungsbereich betrachtet.
-
Während Phase
III wird der Bereich der Speisungseinrichtung (clk1) bezüglich des
Taktbereichs (clk2) des Flops geprüft. Da dieselben nicht übereinstimmen,
wird Q8 mit dem folgenden Fehler markiert:
- • Speisungssignale
in einem Taktbereich, Floptakt in einem anderen.
-
Obwohl
die Erfindung hier unter Bezugnahme auf das bevorzugte Ausführungsbeispiel
beschrieben ist, wird ein Fachmann ohne weiteres erkennen, dass
andere Anwendungen die hier dargelegten ersetzen können, ohne
von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Dementsprechend
soll die Erfindung nur durch die im Folgenden aufgenommenen Ansprüche beschränkt sein.