Verilog 디자인에서 시계 결함을 생성합니다
문제
Verilog를 사용하여 칩을 설계하고 있습니다. 3 비트 카운터가 있습니다. 카운터가 8 번째 루프에있을 때 원합니다. 시계 결함이 있어야합니다 그리고 그 후에 정상적으로 작동합니다. Verilog 디자인에서 시계 결함을 생성하는 가능한 방법은 무엇입니까?
해결책
시계 신호에서 글리치를 주입하는 한 가지 방법은 사용하는 것입니다. force
그리고 release
테스트 벤치에서 :
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
다른 팁
그래서 당신은 본질적으로 여분의 시계 가장자리를 원하십니까? RTL 에서이 작업을 수행하는 방법을 생각할 수 없습니다. 게이트 지연을 사용하여 추악한 해킹을 할 수 있지만 온도 및 공정 변화에 대해 특성화되어야합니다.
문제에 대한 다른 해결책을 생각하는 것이 좋습니다. 이 추가 시계 가장자리가 필요한 이유는 무엇입니까?
제휴하지 않습니다 StackOverflow