在Verilog设计中制作时钟故障。

问题描述 投票:3回答:2

我正在用Verilog设计一个芯片。我有一个3位计数器。我希望当计数器处于第8次循环时。应该有一个时钟故障,此后正常工作。 在Verilog设计中产生时钟故障的可能方法是什么?

verilog clock vlsi
2个回答
6
投票

在时钟信号上注入故障的一种方法是使用 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

1
投票

所以你本质上是想要一个额外的时钟边缘? 我想不出在RTL中可以做到这一点的方法。 你也许可以利用门延迟做一个丑陋的黑客,但这需要根据温度和工艺变化来确定。

我建议你另想办法解决你的问题。 为什么你需要这个额外的时钟边沿?

© www.soinside.com 2019 - 2024. All rights reserved.