我设计使用的Verilog的芯片。我有一个3个counter.I想,当计数器在第8圈,应该有一个时钟故障并随后工作normally.What可以在一个产生时钟故障的可能途径Verilog设计?

有帮助吗?

解决方案

到时钟信号注入毛刺的一个方法是使用forcerelease从测试平台:

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