Produrre un glitch orologio in un design Verilog
Domanda
Io sono la progettazione di un chip utilizzando un Verilog. Ho un counter.I 3 bit vogliono che quando il contatore è alla sua 8 ° ciclo, non ci dovrebbe essere un problema tecnico di clock e successivamente lavorare normally.What potrebbero essere i possibili modi di produrre un glitch in un orologio disegno Verilog?
Soluzione
Un modo per iniettare difetti su un segnale di clock è quello di utilizzare force
e release
dal banco di prova:
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
Altri suggerimenti
Così si vuole essenzialmente un fronte di clock in più? Non riesco a pensare a un modo per fare questo in RTL. Si può essere in grado di fare un brutto hack utilizzando ritardi cancello, ma questo avrebbe bisogno di essere caratterizzato più di variazioni di temperatura e di processo.
Mi raccomando che si pensa di un'altra soluzione al vostro problema. Perché avete bisogno di questo fronte di clock in più?