在Verilog设计中产生时钟故障

在Verilog设计中产生时钟故障,verilog,clock,vlsi,Verilog,Clock,Vlsi,我正在用Verilog设计一个芯片。我有一个3位计数器。我希望当计数器处于第8个循环时,应该出现时钟故障,然后正常工作。在Verilog设计中产生时钟故障的可能方法是什么?那么您实际上想要一个额外的时钟边缘?我想不出用RTL做这件事的方法。您可能能够利用门延迟进行丑陋的破解,但这需要根据温度和工艺变化来描述 我建议你为你的问题想出另一个解决办法。为什么需要这个额外的时钟边缘?在时钟信号上注入小故障的一种方法是从测试台上使用force和release: module tb; reg clk; r

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

那么您实际上想要一个额外的时钟边缘?我想不出用RTL做这件事的方法。您可能能够利用门延迟进行丑陋的破解,但这需要根据温度和工艺变化来描述


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

在时钟信号上注入小故障的一种方法是从测试台上使用
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
模块tb;
注册时钟;
reg[2:0]cnt;
reg复位;
总是开始

#5 clk我正在开发对密码的攻击。为此,我需要能够在加密阶段引发某种故障。我认为一种可能导致故障的方法是在特定的时间点出现时钟故障——我还以为你想要在实际的硬件中出现故障呢!