La producción de un fallo del reloj en un diseño de Verilog
Pregunta
Estoy diseñando un chip usando un Verilog. Tengo un counter.I 3 bits quieren que cuando el contador se encuentra en su octavo ciclo, no debería ser un problema técnico de reloj y, posteriormente, trabajar normally.What podrían ser las posibles maneras de producir un fallo en un reloj diseño de verilog?
Solución
Una manera de inyectar fallos en una señal de reloj es utilizar force
y release
de su banco de pruebas:
module tb;
reg clk;
reg [2:0] cnt;
reg reset;
always begin
#5 clk <= 0;
#5 clk <= 1;
end
always @(posedge clk or posedge reset) begin
if (reset) begin
cnt <= 0;
end else begin
cnt <= cnt + 1;
end
end
always begin: inject_clk_glitch
wait(cnt == 7);
#1 force clk = 1;
#1 force clk = 0;
#1 release clk;
end
initial begin
reset = 1;
#20 reset = 0;
#500 $finish;
end
endmodule
Otros consejos
Así que quiere esencialmente una ventaja extra reloj? No puedo pensar en una manera de hacer esto en RTL. Usted puede ser capaz de hacer un truco feo que utiliza retardos de puerta, pero esto tendría que caracterizarse sobre las variaciones de temperatura y de proceso.
Me gustaría recomendar que usted piensa en otra solución a su problema. ¿Por qué necesita esta ventaja extra reloj?