La production d'un petit problème d'horloge dans un design Verilog
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?
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?