2010-02-12 4 views
3

저는 Verilog를 사용하여 칩을 설계하고 있습니다. 3 비트 카운터가 있습니다. 카운터가 8 번째 루프에있을 때 에 시계 결함이 있고이 있어야하며 정상적으로 작동해야합니다. Verilog 디자인에서 시계 결함을 일으킬 수있는 방법은 무엇일까요?Verilog 디자인에서 시계 결함 발생

답변

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에서 이것을 할 수있는 방법을 생각할 수 없다. 게이트 지연을 사용하여 못생긴 해킹을 할 수는 있지만 온도 및 프로세스 변화에 따라 특성화해야합니다.

다른 해결책을 생각해 보는 것이 좋습니다. 왜이 여분의 클럭 에지가 필요합니까? 클럭 신호에 글리치를 주입

+0

내가 암호에 대한 공격을 개발하고있다. 이를 위해서는 암호화 단계에서 어떤 종류의 오류를 유발할 수 있어야합니다. 몇 가지 결점을 유발할 수있는 한 가지 방법은 특정 순간에 시계 결함이있는 것입니다. –

+0

알겠습니다. 미안해, 내가 도울 수 없어 - 행운을 빈다! – Marty

+0

죄송합니다. 실제 하드웨어에 결함이 있다고 생각했습니다. – Marty