質問

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 でこれを行う方法が思いつきません。ゲート遅延を利用した醜いハッキングも可能かもしれませんが、これは温度とプロセスの変動を考慮して特性を評価する必要があります。

問題に対する別の解決策を考えることをお勧めします。なぜこの余分なクロック エッジが必要なのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top