Si bien existen herramientas específicas, de fabricantes como Xilinx o Intel, que funcionan en Linux, es interesante tener un herramienta liviana y gratuita para realizar pruebas.
Comenzar instalando iverilog, el cual es un compilador que traduce código fuente Verilog en un programa ejecutable para simulaciones.
# apt install iverilog
Luego instalar gtkwave, la cual es una herramienta de visualización de archivos VCD (entre otros).
Nota: VCD son las iniciales de "Value Change Dump" , y es un formato de archivos industrial estándar para el volcado de simulaciones.
# apt install gtkwave
Ahora en un editor de texto, creamos un sencillo ejemplo en verilog de una compuerta and de 2 entradas, llamado and_2_in.v :
module and_2_in(
input a,
input b,
output x
);
assign x = (a & b);
endmodule
Luego, en la misma carpeta, creamos un testbench de ejemplo, and_2_in_tb.v :
`timescale 10ns/100ps
module and_2_in_tb;
reg i,j;
wire z;
and_2_in u0_DUT(
.a(i),
.b(j),
.x(z)
);
initial begin
$dumpfile("wave_tb_and_2_in.vcd");
$dumpvars(0,and_2_in_tb);
i=1'b0;
j=1'b0;
#5 i=1'b1;
#5 i=1'b0;
#5 j=1'b1;
#5 i=1'b0;
#5 i=1'b1;
#5 j=1'b1;
#5 $finish;
end
endmodule
Compilamos el programa and_2_in.v, y además pasamos como argumento el testbench and_2_in_tb.v, con el comando:
$ iverilog -o out_and_2_in and_2_in.v and_2_in_tb.v
Iverilog generará el archivo ejecutable out_and_2_in . Este archivo no es ejecutable por cualquier plataforma, por lo que se invoca a vvp.
Lanzamos vvp, el cual es el "run time engine", que ejecuta la salida compilada de iverilog:
$ vvp out_and_2_in
El comando anterior genera un archivo vcd con el nombre asignado en el apartado $dumpfile("wave_tb_and_2_in.vcd") del testbench.
Finalmente, lanzamos gtkwave pasando como argumento el archivo vcd generado.
$ gtkwave wave_tb_and_2_in.vcd
Seleccionamos la señales que nos interesa visualizar :
Ajustamos el zoom:
T.R.
No hay comentarios.:
Publicar un comentario