Sintaxis

Sintaxis Verilog

Componentes léxicos

Los archivos de código fuente Verilog constan de los siguientes componentes (tokens) léxicos:

Espaciadores

Los espacios en blanco separan las palabras y pueden ser: espacios, tabuladores, caracteres de nueva línea y de retorno de carro. Así, una sentencia puede extenderse sobre múltiples líneas sin caracteres de continuación especiales.

Comentarios

Los comentarios se pueden especificar de dos maneras (exactamente de la misma manera que en C/C++):

  • Comenzando el comentario con dos barras diagonales //. Todo el texto entre estos caracteres y el final de la línea será ignorado por el compilador Verilog.
  • Comentarios entre los caracteres /* y */. El uso de este método permite continuar los comentarios en más de una línea. Esto es bueno para "comentar" código de muchas líneas o para comentarios breves intercalados en la línea.

    a = c+d; // este es un comentario simple 
    /* sin embargo, este comentario continua
    en más de una línea */ 
    
    assign y = temp_reg; 
    assign x = ABC /* más su complemento */ + ABC_

Números

El almacenamiento de números se define con un número de bits y el correspondiente valor que puede especificarse en binario, octal, decimal o hexadecimal.

Ejemplos

3'b001       // un número de 3 bits
5'd30        // = 5'b11110
16'h5ED4     // = 16'd24276

Identificadores

Los identificadores son palabras definidas por el usuario para variables, nombres de funciones, nombres de módulos, nombres de bloques y nombres de instancia.

Los identificadores comienzan con una letra o subrayado (no con un número o $) y pueden incluir cualquier número de letras, dígitos y subrayados.

Los identificadores en Verilog distinguen entre mayúsculas y minúsculas.

Símbolos permitidos:    ABCDE...abcdef...1234567890 _$

Símbolos no permitidos: - & # @

Ejemplos

adder         // usa subrayados para hacer 
by_8_shifter  // los identificadores más legibles 
_ABC_         /* no es lo mismo que */ _abc_ 
Read_         // suele usarse para indicar NOT Read

Operadores

Los operadores son uno, dos, y a veces tres caracteres con símbolos especiales, p.ej. >, +, ~, &, !, =, utilizados para realizar operaciones sobre variables.

El conjunto de operadores y su uso se describen en detalle en apartados posteriores.

Palabras clave

Estas son palabras que tienen un significado especial en Verilog. Algunos ejemplos son assign, case, while, wire, reg, and, or, nand, y module, la lista completa se verá en lo sucesivo.

No deben utilizarse como identificadores.

Las palabras clave de Verilog también incluyen directivas del compilador, tareas y funciones del sistema.

Estructura de módulos

El diseño de circuitos y sistemas digitales con Verilog HDL pasa siempre por utilización jerárquica de módulos como elemento principal del lenguaje y la descripción a distintos niveles de abstracción y estilos del mismo.


  `directivas_compilador 

  module nombre_de_modulo(...);

    // interfaz (puertos)
    input …
    output …
    inout …
    // conexiones internas, variables, ...
    wire …
    reg …
    integer …
    real …
    time …
    // componentes (submódulos)
    instancias_de_modulos
    instancias_de_primitivas
    // estructura/comportamiento
    assign
    initial
    always

  endmodule

Operadores Tipos de datos