Diferencia entre la configuración de relojes en Verilog

1

Estas dos declaraciones se utilizan con bastante frecuencia para configurar los relojes en los bancos de pruebas:

initial
begin
  clock = 1'b0;
  forever #5 clock = ~clock;
end
always
begin
  clock = 1'b0;
  #5 clock = 1'b1;
  #5;
end

¿Hay alguna diferencia entre los dos o son 100% iguales e intercambiables?

    
pregunta triplebig

2 respuestas

1

Sus ejemplos son básicamente los mismos. Sin embargo, solo uso el primer ejemplo, con una definición para el recuento de ciclos. Aquí hay un fragmento de mi código:

'define CYCLE 100 // in nanoseconds
....

// create a clock depending on the CYCLE setting
initial begin
   clk = 1'b0;
   // every half-CYCLE invert
   forever #(CYCLE/2) clk = ~clk;
end

Prefiero usar un bloque inicial para mi reloj de banco de pruebas porque los bloques iniciales nunca se sintetizan. Por lo tanto, colocarlo dentro de un bloque inicial hace bastante claro que este código es solo para simulación.

    
respondido por el Brian Onn
0

Tiendo a usar otra forma, que es algo más corta

reg clk = 0;
always #3.2 clk = ~clk; // 156.25Mhz

No tengo idea si alguno de los dos es más barato en tiempo de ejecución para el simulador.

    
respondido por el shuckc

Lea otras preguntas en las etiquetas