Los archivos de código fuente Verilog constan de los siguientes componentes (tokens) léxicos:
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.
Los comentarios se pueden especificar de dos maneras (exactamente de la misma manera que en C/C++):
//
. 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_
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
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
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.
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.
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