Verilog デザインでクロック グリッチが発生する
質問
Verilogを使用してチップを設計しています。3 ビットのカウンターがあります。カウンターが 8 番目のループにあるときに、 時計の不具合があるはずです Verilog デザインでクロック グリッチが発生する考えられる方法は何ですか?
解決
クロック信号にグリッチを挿入する 1 つの方法は、 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