2009-03-16 10 views

Respuesta

10

Me temo que tampoco sé nada sobre Verilog, aunque observo que hay un Verilog Distribution en el CPAN, y contiene una gran cantidad de módulos que pueden ser relevantes para su trabajo. Hacer una búsqueda en search.cpan.org también puede proporcionar algún beneficio.

En cualquier caso, tendrá que aprender a caminar antes de poder correr. Es excelente tener un objetivo al aprender un nuevo idioma, pero los módulos no lo ayudarán a menos que primero comprenda la sintaxis y la semántica de Perl.

Si está buscando un buen libro para aprender, entonces el ya mencionado Learning Perl (por Stackoverflow Regular brian d foy) es excelente; agarra la última edición que puedes encontrar. Si quiere comenzar a aprender en este momento, entonces le recomendaría descargar Perl Training Australia 's Programming Perl course manual. Ambos recursos contienen muchos ejemplos detallados, enlaces a más información y ejercicios que pueden intentar cimentar su conocimiento. También hay una lista de recommended online tutorials en el Perl 5 wiki.

Divulgación: Soy coautor de los manuales de curso de Perl Training Australia, y admiro a Brian Foy como uno de los héroes de la comunidad de Perl. También soy colaborador ocasional de la wiki de Perl 5.

Todo lo mejor,

Paul

+2

datos Munging con Perl por Dave Cruz también es un buen libro para la gente que es el uso principal de Perl es simplemente tirando cosas fuera de texto. –

6

No sé nada sobre Verilog, pero si ya está familiarizado con otro lenguaje de programación, entonces recomiendo Learning Perl.

También puede consultar this page para más tarde.

1

Verilog puerta a nivel de archivos de listas de conexiones son sólo archivos de texto, por lo general emitidos desde algún software como Synopsys diseño compilador, por lo que son muy adecuadas para ser analizada por Perl.

Siendo simples archivos de texto, no hay nada especial en ellos con respecto a Perl. Estudie cualquier tutorial de Perl que le presente los conceptos básicos de la sintaxis de Perl y las expresiones regulares, y lo que aprenderá debe ser fácilmente adaptable a sus tareas relacionadas con Verilog. Ver por ejemplo: http://perldoc.perl.org/perlintro.html - para una introducción general. http://perldoc.perl.org/perlretut.html - para un buen tutorial de expresiones regulares.

Sin embargo, incluso un programa simple puede tener muchas fallas ocultas. Por ejemplo, digamos que usted desea imprimir todos los nombres de los módulos de su jerárquica Verilog lista de conexiones:

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"; 

Incluso este ejemplo corto está lleno de errores potenciales: ¿y si el nombre del módulo no está en la misma línea que el " módulo "palabra clave? ¿Qué pasa si no hay espacio entre la apertura "(" del módulo y el nombre del módulo?¿Qué pasa si hay un espacio (o espacios) entre el comienzo de la línea y la palabra clave "módulo"?

Debe tener en cuenta estos desafíos. Si todo lo que necesita es una solución simple y única para una tarea específica relacionada con Verilog, un simple script de Perl como la solución anterior es una buena solución, siempre que esté debidamente documentado para advertir a los futuros usuarios de sus deficiencias conocidas.

Si necesita algo más complejo, que implique un análisis más complejo del código Verilog, tal vez intente ver si alguna de sus herramientas existentes (compilador, linter, comprobador de equivalencia formal, simulador, etc.) le da acceso a la datos que necesita Todas estas herramientas incluyen analizadores Verilog maduros y de trabajo, optimizados para velocidad/memoria y con frecuencia proporcionan una interfaz basada en Tcl para acceder a los datos.

Algunas de las personas que están arriba de mí han recomendado Verilog-Perl. Lo probé y descubrí que es extremadamente lento. Si está manejando listas de redes de más de 100MB, no usaría esta solución, pero su kilometraje puede variar.

1

Creo que está buscando Verilog Perl. Para una clase de pago en Perl para Verilog/VHDL, considere this from Doulos. En segundo lugar, el voto para el manual del curso Perl Programming Perl Training Australia para el aprendizaje de Perl en general.

2

El Perl Intro en perldoc es la forma en que lo aprendí por primera vez. Es un resumen del idioma realmente rápido y fácil. Todos los principiantes que ya conocen un lenguaje de programación deberían comenzar aquí. Puedes leerlo en aproximadamente media hora y estar listo para comenzar a codificar.

Cuestiones relacionadas