Question

Je suis la conception d'une puce en utilisant un Verilog. J'ai 3 bits counter.I veulent que lorsque le compteur est à sa 8e boucle, il devrait y avoir un petit problème d'horloge et travaux par la suite normally.What pourraient être les moyens possibles de produire un petit problème d'horloge dans un conception Verilog?

Était-ce utile?

La solution

Une façon d'injecter sur glitches un signal d'horloge est d'utiliser force et release de votre banc d'essai:

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

Autres conseils

Donc, vous voulez essentiellement un bord d'horloge supplémentaire? Je ne peux pas penser à une façon de le faire dans RTL. Vous pourrez peut-être faire une bidouille horrible utilisant des retards de porte, mais cela devrait être caractérisé sur les variations de température et de process.

Je vous recommande de penser à une autre solution à votre problème. Pourquoi avez-vous besoin de ce bord d'horloge supplémentaire?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top