【问题标题】:Producing a clock glitch in a Verilog design在 Verilog 设计中产生时钟故障
【发布时间】:2010-02-12 11:36:58
【问题描述】:

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

【问题讨论】:

    标签: verilog clock vlsi


    【解决方案1】:

    在时钟信号上注入毛刺的一种方法是使用测试平台中的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
    

    【讨论】:

      【解决方案2】:

      所以你本质上想要一个额外的时钟边沿?我想不出在 RTL 中做到这一点的方法。您也许可以利用门延迟进行丑陋的破解,但这需要根据温度和工艺变化进行表征。

      我建议您考虑另一种解决问题的方法。为什么需要这个额外的时钟边沿?

      【讨论】:

      • 我正在开发对密码的攻击。为此,我需要能够在加密阶段引发某种故障。我认为引发故障的一种可能方法是在特定时刻出现时钟故障
      • 糟糕 - 我以为你想要在实际硬件中出现故障!
      猜你喜欢
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      相关资源
      最近更新 更多