Programación en Verilog/Directivas para el compilador
Verilog ofrece un conjunto de directivas de compilación que permiten obtener diferentes códigos a partir de una única descripción. A continuación se detallan las más comunes. La sintaxis para la definición de una directiva es la siguiente.
'directiva <nombre> <valor>
Define
editarLa directiva define permite definir un valor.
'define TD 1
........
assign #TD data = A;
Include
editarLa directiva include, como su nombre indica permite incluir un fichero, el cual puede contener, por ejemplo, la definición de otros módulos.
'include "sumador.v"
Ifdef
editarLa directiva ifdef permite compilar un código siempre y cuando se haya definido el símbolo al que referencia.
'define SIMULATION
.....
always @(posedge clk or posedge rst)
if(rst)
data <= 0;
else
'ifdef SIMULATION
data <= A;
'else
data <= B;
'endif
Timescale
editarLa directiva timescale permite definir las unidades de tiempo con las que se va a trabajar. La sintaxis de esta directiva es la siguiente. Donde la unidad de tiempo es mayor o igual a la resolución y los valores que pueden tomar los enteros son 1, 10 y 100 y la unidad de medida puede ser: "s", "ms", "us", "ns", "ps" y "fs".
'timescale <unidad de tiempo> / <resolucion>
Un ejemplo de esta directiva es la siguiente.
'timescale 1ns/100ps
.........
En el ejemplo, la unidad de tiempo empleada es el nanosegundo y cualquier retraso fraccional se redondeará al primer decimal debido a la resolución especificada.