Yu-wen Pang Abschlußbericht vom Studienprojekt Veri-Spec 15. Dez. '01
Abschlußbericht vom Projekt Veri-Spec
Abstract
In der Halbleiterindustrie werden Eigenschaften von Schaltkreisen für die Fertigungsprozesse in Form sogenannter Netzliste beschrieben, die den Aufbau der Schaltung aus elementaren Grundbestandteilen angibt. Bestimmte Eigenschaften dieser Netzlisten werden dabei in Spezifikationen beschrieben. Diese Dokumente sind für die Interpretation durch Menschen gedacht.
Veri-Spec ist ein in der Schaltungsentwicklung verwendbares Konsistenzprüfprogramm. Das Programm soll anzeigen, ob Schaltkreise richtig aufgebaut werden, indem es überprüft, ob die Informationen in der Verilog-Netzliste mit im FrameMaker beschriebenen Spezifikationen übereinstimmen. Dadurch werden die Unstimmigkeiten herausgefunden. Bisher ist eine solche Prüfung oft manuell durchgeführt worden und aufgrund der großen Datenmengen mit hohem Zeitaufwand und Fehlerträchtigkeit verbunden.
Der Schwerpunkt dieses Programms liegt im Interface Bereich von IC (Schaltkreis), wobei die bestimmten Eigenschaften der Anschlüsse verglichen werden.
Ziel
Das Ziel von Veri-Spec ist, die Unstimmigkeiten zwischen einer Netzliste und ihren Spezifikationen durch eine automatische Verarbeitung auszugeben.
Das Programm beschränkt sich auf Netzlisten im Verilog-Format und Spezifikationen, die im Frame-Maker Interchange Format (MIF) abgefaßt sind.
Folgende Teile der Netzliste wurden untersucht : der primäre Anschlußbereich, bestehend aus unidirektionalen Ein-/Ausgänge, bidirektionalen Anschlüssen, differenziellen Signalen sowie Bussignale. Für jeden Anschluß werden a) sein Vorkommen in der Spezifikation, b) seine Richtung, c) seine primären Anschlußzellen bestimmt. (Im Programm wird zur Zeit nur Treiber geprüft. Die Überprüfung der Pull-Widerstände muß noch unternommen werden.) Bei Bussignalen wird zusätzlich geprüft, ob die Busbreite korrekt ist. (Die Prüfung, ob bei Bussignalen/Differenzsignalen der dergleiche Treibertyp verwendet wird, ist noch ins Programm einzubauen.)
Es ist gelungen, in oben genannten Punkten Fehler von Schaltkreisen anhand des Ergebnises des Programms schnell herauszufinden.
Struktur des Programms und Quellcode : unter Verzeichnis `programs´.
User Documentation
(a) In Veri-Spec verwendete Dateiformat
1. Perl script (veri_spec.pl / perlshell.pl)
2. Netzlisten im Verilog-Format (verilog_NL.v)
3. Spezifikationen im Frame-Maker Interchange Format (mif_spec.mif)
4. outputfile von C (rmmifcomment)
(b) Für Veri-Spec nötige Programme
1. Perl Shell (um das Programm veri_spec.pl auszuführen)
2. Frame Maker Editor (um MIF-Spezifikation anzuschauen)
3. Text Editor (um zu bearbeiten des Quellcode aller in Veri-Spec verwendeten Dateien)
(c) Programmstart
1. Um Help Text abzurufen, in der Kommandozeile eingeben :
perl veri_spec.pl oder perl veri_spec.pl -h |-help |--help
Es wird ein kurzer Help Text angezeigt.
2. Um das Programm auszuführen, in der Kommandozeile angeben :
perl veri_spec.pl -verilog foo.v -mifspec foo.mif -script foo.pl
Das Programm veri_spec.pl nimmt drei Parameter an :
(1) ein verilog-Netzlist
(2) eine entsprechende MIF-Datei
(3) ein Perl Script, in der die Infos über Tabellen in MIF-Datei stehen
Die ersten zwei Parameter sind in der Kommandozeile notwendig. Wenn man den dritten Parameter gleich in der Kommandozeile annimmt, muß man zuerst die Tabellen-Infos in der Perl Script ändern. Hierbei ist ein Muster unter dem Name perlshell.pl. Man kann auch nur die ersten zwei Parameter in der Kommandozeile angeben, wartet bis 'psh>' im Bildschirm vorkommt und gibt einzelnen erwünschten Kommando ein (z. B. Was in der Perl Script steht).
(Achtung : Das beigefügte 'rmmifcomment' ist die Outputfile des C-Programmes `remove_mif_comment.c´. Die Berechtigung muß zum 'ausführen' gesetzt werden.)
(d) Erklärung zum Ergebnis
Das Ergebnis steht im Logfile `ergebnis.log´. Die zwischen der Netzliste und MIF-Spezifikation unstimmige Daten, die durch Veri-Spec entdeckt werden, sind im Ergebnis mit 'veri_spec.pl Error' oder mit Fragezeichen versehen.
Beispiele : siehe Verzeichnis `BeispielPaket´.
Änderungen zur Spezifikation und ihre Gründe
Das Programm hat die Grunderwartung dieses Projekts erreicht, nämlich Konsistenzprüfung zwischen Verilog-Netzlist und Spezifikationen in MIF. (R-1.2 in Spezifikation von Veri-Spec.) Die Erweiterungen auf dieser Grundlage (R-1.1 bzw. R-7.3 & R-1.3 bzw. R-7.2) sind noch einzubauen.
Desweiteren sind die folgenden Punkte geändert bzw. fehlen:
(a) R-2.3 Das Programm wird jetzt so gestartet mit folgenden Parametern :
pl veri_spec.pl [-h|-help|--help] -verilog <filename> -mifspec <filename> -script <filename>
(b) R-2.3.3 (Debug Option) & R-2.3.4 (Verbose Option) fehlen. Stattdessen sind an ein paar Stellen im Programm Befehle eingebaut, um die erwünschten Informationen zu bekommen.
(c) R-4.2.b (Pull-Extraction) fehlt.
(d) R-7.1.2 (Pull Resistor Check) fehlt.
(e) R-7.1.3 (zweiter Teil : Konsistenzprüfung von Buffer-Typ zwischen allen Busmembers) fehlt.
Der Hauptgrund für die fehlenden Funktionen liegt an der beschränkten Zeit. Das Studium der Struktur von Netzliste und MIF hat großen Zeitaufwand verursacht.
Schlüsse
(a) Was ist im Programm zu verbessern ?
1. Das C-Programme('rmmifcomment') ist nicht nötig. Es konnte durch Perl-Instruktionen ersetzt werden. Dadurch konnte das Anlegen einer Zwischendatei und ein weiterer Lesevorgang eingespart werden.
2. Für den MIF-Leser sollte eine Strategie erdacht werden, die die automatische Erkennung von Signalnamen usw. ermöglicht.
3. Das Programm mußte um einige Ausgaben erweitert werden, z.B. Zeitstempel und Port/GateCount Zähler.
Zusammenfassend muß die Leistungsfähigkeit des Programms noch deutlich gesteigert werden
(b) Wie könnte es weitergehen?
1. Das Programm sollte weiter entwickelt werden, daß es auch in der Lage ist, diese Informationen zwischen zwei Dokumenten oder zwei Netzlisten zu vergleichen.
2. Die weitere Aussicht richtet sich auf andere Bereiche in Netzlisten. Mittels einigen Veränderungen des Programms sollten die Informationen von anderen Bereichen in der Netzliste untersucht werden können, z.B. interne Verbindungsnamen oder Modulpins .