Verilog es un lenguaje de descripción de hardware con el que podremos diseñar y simular circuitos electrónicos digitales.

En esta web solemos hablar de VHDL, como el propio nombre de la página indica. No obstante el mundo del diseño electrónico se divide en dos frentes, los amantes de VHDL y los defensores de Verilog.

Esta guerra data de hace practicamente 30 años, cuando VHDL surgio de una necesidad del ejercito americano por estandarizar los formatos de los diseños digitales entre diferentes contratistas, os dejo la historia en este enlace. Al poco tiempo en la industria electronica surgio una alternativa llamado Verilog, que rápidamente se hizo un hueco.

Sin animo de entrar en mucho detalle, VHDL está basado en ADA un lenguaje fuertemente tipado ya en deuso, mientras que Verilog intentaba parecerse mas a C, que era lo que en esa epoca utilizaban los programadores de software.

A continuación os dejamos un video donde explicamos que es Verilog, sus características principales y varios ejemplos para que aprendáis a utilizarlo.

Recordad que si queréis simular los ejemplos del video en edaplayground tenéis acceso gratuito a diferentes simuladores de VHDL y Verilog. En este otro video os explicamos cómo.

Hola mundo en Verilog

Como siempre que se comienza en cualquier lenguaje lo primero que haremos es un Hola Mundo. Como ya vimos en otro post, en el ámbito de las FPGA el hola mundo es hacer parpadear un led. En Verilog todo es muy similar a VHDL, deberemos hacer un modulo con un puerto de salida y un botón de entrada.

Después deberemos crear un testbench que nos permita realizar la simulación para ver las formas de onda de salida a partir de los estimulos que apliquemos.

En Verilog el módulo de encender un led tendría este aspecto:

module helloworld (button_i, led_o);
  input       button_i;
  output wire led_o;

  assign led_o = button_i;
endmodule   

Y a continuación creariamos un testbench donde conectariamos nuestro módulo y asignariamos valores a la entrada conectada al boton, para poder ver en la salida como inmediatamente el led se enciende.

module test;
  reg  button;
  wire led;
  helloworld UUT (button, led);
  initial
  begin
    $dumpfile("dump.vcd");
    $dumpvars();
    button = 1'b0;
    #20;
    button = 1'b1;
    #20;
    button = 1'b0;
    #20;
    $finish;
  end
endmodule

La salida de nuestro test sería la siguiente:

¿Es mejor VHDL o Verilog? Diferencias entre VHDL y Verilog.

Esta es la pregunta del millón. ¿Estoy aprendiendo sobre FPGA, que lenguaje debo estudiar, VHDL o Verilog.? ¿Es mejor Verilog que VHDL?.

Es una respuesta compleja. Pero si os puedo decir una cosa, las grandes empresas utilizan Verilog y mas concretamente SystemVerilog para poder realizar verificación avanzada. En ese aspecto VHDL se ha quedado atras. Existen en la actualidad librerias de verificación para VHDL como OSVVM, pero las empresas grandes piden ingenieros de verificación expertos en UVM con SystemVerilog.

Si quieres dedicarte profesionalmente a esto, tirate a aprender SystemVerilog. Si lo haces por hobby, casi todos los simuladores de código abierto y herramientas asociadas están en Verilog.

VHDL se ha quedado en empresas pequeñas y medianas europeas, sin necesidades avanzadas de verificación. También para aprender es mas sencillo, es como aprender a programar en JAVA o en C, VHDL seria como JAVA, la sintáxis es mas rica y el codigo se entiende mejor. Por contra Verilog es mas criptico.

Mi conclusión es que si tuviera que empezar desde cero y tuviera que aprender un lenguaje HDL, aprenderia Verilog. Por ser el mas usado en la industria y por la cantidad de herramientas de código abierto disponible.