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?

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top