저는 Verilog를 사용하여 칩을 설계하고 있습니다. 3 비트 카운터가 있습니다. 카운터가 8 번째 루프에있을 때 에 시계 결함이 있고이 있어야하며 정상적으로 작동해야합니다. Verilog 디자인에서 시계 결함을 일으킬 수있는 방법은 무엇일까요?Verilog 디자인에서 시계 결함 발생
3
A
답변
6
한 가지 방법은 테스트 벤치에서 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
1
기본적으로 여분의 클럭 에지가 필요하십니까? 나는 RTL에서 이것을 할 수있는 방법을 생각할 수 없다. 게이트 지연을 사용하여 못생긴 해킹을 할 수는 있지만 온도 및 프로세스 변화에 따라 특성화해야합니다.
다른 해결책을 생각해 보는 것이 좋습니다. 왜이 여분의 클럭 에지가 필요합니까? 클럭 신호에 글리치를 주입
내가 암호에 대한 공격을 개발하고있다. 이를 위해서는 암호화 단계에서 어떤 종류의 오류를 유발할 수 있어야합니다. 몇 가지 결점을 유발할 수있는 한 가지 방법은 특정 순간에 시계 결함이있는 것입니다. –
알겠습니다. 미안해, 내가 도울 수 없어 - 행운을 빈다! – Marty
죄송합니다. 실제 하드웨어에 결함이 있다고 생각했습니다. – Marty