2009-03-16 2 views

Antwort

10

Ich fürchte, ich weiß auch nichts über Verilog, obwohl ich bemerke, dass es eine Verilog Distribution auf dem CPAN gibt, und es enthält eine Menge von Modulen, die für Ihre Arbeit relevant sein können. Eine Suche auf search.cpan.org kann auch einige Vorteile bieten.

In jedem Fall müssen Sie lernen, wie man läuft, bevor Sie laufen können. Es ist ausgezeichnet, ein Ziel zu haben, wenn man eine neue Sprache lernt, aber die Module werden Ihnen nicht helfen, wenn Sie Perls Syntax und Semantik nicht verstehen.

Wenn Sie ein gutes Buch zum Lernen suchen, dann ist das bereits erwähnte Learning Perl (von Stackoverflow Regular brian d foy) ausgezeichnet; schnappen Sie sich die neueste Ausgabe, die Sie finden können. Wenn Sie jetzt lernen möchten, dann würde ich empfehlen, Perl Training Australia 's Programming Perl course manual herunterzuladen. Beide Ressourcen enthalten viele detaillierte Beispiele, Links zu weiteren Informationen und Übungen, mit denen Sie Ihr Wissen festigen können.

Es gibt auch eine Liste von recommended online tutorials auf der Perl 5 wiki.

Disclosure: Ich bin Co-Autor von Perl Training Australien Kurs Handbücher, und ich bewundere Brian d Foy als einer der Helden der Perl-Community. Ich schreibe auch gelegentlich zum Perl 5 Wiki.

Alles Gute,

Paul

+2

Daten Mungen mit Perl von Dave Cross ist auch ein gutes Buch für Menschen, die nur primäre Verwendung von Perl ist Zeug aus Text ziehen. –

6

Ich weiß nichts über Verilog, aber wenn Sie bereits mit einer anderen Programmiersprache vertraut sind, dann empfehle ich Learning Perl. Sie können auch this page für später herunterladen.

1

Verilog Gate-Level-Netzlisten-Dateien sind nur Text-Dateien, in der Regel von einer Software wie Synopsys Design-Compiler ausgegeben, so sind sie gut geeignet, um durch Parsen Perl.

Da es sich um einfache Textdateien handelt, gibt es in Bezug auf Perl wirklich nichts Besonderes. Lernen Sie ein Perl-Tutorial kennen, das Sie in die Grundlagen der Perl-Syntax und regulärer Ausdrücke einführt und was Sie dort lernen werden, sollte leicht an Ihre Verilog-Aufgaben angepasst werden können. Siehe zum Beispiel: http://perldoc.perl.org/perlintro.html - für eine allgemeine Einleitung. http://perldoc.perl.org/perlretut.html - für ein gutes Tutorial für reguläre Ausdrücke.

Aber auch ein einfaches Programm kann viele versteckte Fehler haben. Zum Beispiel können sagen, Sie alle Modulnamen aus dem hierarchischen Verilog Netzliste drucken möchten:

use strict; 
use warnings; 

my $infile = $ARGV[0] or die "$0 Usage:\n\t$0 <input verilog file>\n\n"; 
open(my $in_fh , '<' , $infile) or die "$0 Error: Couldn't open $infile for reading: $!\n"; 

while(<$in_fh>) { 

    if (m/^module\s+(\S+)/) { 
     print "$1\n"; 
    } 

} 

close($in_fh) or die "$0 Error: Couldn't close $infile after reading: $!\n"; 

Auch in diesem kurzen Beispiel ist voll von möglichen Fehlern: Was, wenn der Modulname nicht auf der gleichen Linie wie das ist " Modul "Schlüsselwort? Was ist, wenn zwischen der Öffnung "(" des Moduls und dem Modulnamen kein Leerzeichen steht)?Was ist, wenn zwischen dem Anfang der Zeile und dem Schlüsselwort "module" ein Leerzeichen (oder Leerzeichen) steht?

Sie müssen sich diesen Herausforderungen bewusst sein. Wenn Sie lediglich eine einfache One-Shot-Lösung für eine bestimmte Verilog-Aufgabe benötigen, ist ein einfaches Perl-Skript wie die obige Lösung eine gute Lösung, vorausgesetzt, es ist ordnungsgemäß dokumentiert, um zukünftige Benutzer vor bekannten Mängeln zu warnen. Wenn Sie etwas Komplexeres benötigen, das ein komplexeres Parsing von Verilog - Code erfordert, würde ich vielleicht versuchen, zu sehen, ob eines Ihrer vorhandenen Tools (Compiler, Linter, Formal Equivalence Checker, Simulator, etc.) Ihnen Zugriff auf die Daten, die Sie brauchen. Alle diese Tools umfassen ausgereifte und funktionierende Verilog-Parser, die für Geschwindigkeit/Speicher optimiert sind und häufig eine Tcl-basierte Schnittstelle für den Zugriff auf die Daten bereitstellen.

Einige der Leute über mir haben Verilog-Perl empfohlen. Ich habe es ausprobiert und fand es extrem langsam. Wenn Sie mit Netzlisten über 100 MB arbeiten, würde ich diese Lösung nicht verwenden, aber Ihre Laufleistung kann variieren.

1

Ich glaube, Sie suchen nach Verilog Perl. Für eine Pay-Klasse auf Perl für Verilog/VHDL betrachten this from Doulos. Ich stimme der Abstimmung für Perl Training Australiens Programming Perl Kurshandbuch für das Erlernen von Perl im Allgemeinen zu.

2

Die Perl Intro auf perldoc ist die Art, wie ich es zuerst gelernt habe. Es ist ein sehr schneller und einfacher Überblick über die Sprache. Alle Anfänger, die bereits eine Programmiersprache kennen, sollten hier anfangen. Sie können es in ungefähr einer halben Stunde lesen und bereit sein, mit dem Programmieren zu beginnen.