반응형
Clock Mux의 sel
신호에 Glitch 발생 시 문제점 및 해결 방법
Clock Mux(clk_mux
)는 두 개 이상의 클럭 신호 중 하나를 선택하는 역할을 합니다. 그러나 sel
신호에 글리치(Glitch)가 발생하면 예기치 않은 클럭 전환, 메타스테빌리티, 타이밍 위반 등의 문제가 발생할 수 있습니다.
문제점 (Issues)
1. Glitch로 인한 짧은 Clock Pulse 발생
sel
신호가 글리치로 인해 빠르게 변하면, Clock Mux의 출력이 순간적으로 잘못된 클럭을 선택할 수 있습니다.- 이로 인해 짧은 클럭 펄스(Glitch Clock Pulse)가 생성되어, 플립플롭(FF)이 비정상적인 동작을 하거나 타이밍 위반을 유발할 수 있습니다.
2. Metastability (메타스테빌리티)
sel
신호가 비동기적으로 전환되면, Mux 내부에서 클럭이 비정확한 타이밍에 바뀔 수 있습니다.- 결과적으로 일부 레지스터가 새로운 클럭에서 setup/hold violation을 일으켜 불안정한 동작을 초래할 수 있습니다.
3. Clock Domain Crossing (CDC) 문제
sel
신호가 다른 클럭 도메인에서 오면 동기화 없이 사용할 경우, Clock Mux가 비정상적으로 전환되면서 데이터 손실이 발생할 수 있습니다.
해결 방법 (Solutions)
1. sel
신호를 동기화(Synchronization)
sel
신호가 다른 클럭 도메인에서 오는 경우, 반드시 플립플롭을 이용한 동기화 회로를 사용해야 합니다.- 예제: 2단계 동기화 회로
module sync_sel (
input logic clk,
input logic async_sel,
output logic sync_sel
);
logic sel_ff1;
always @(posedge clk) begin
sel_ff1 <= async_sel;
sync_sel <= sel_ff1;
end
endmodule
async_sel
을 두 개의 플립플롭(FF) 단계를 거쳐sync_sel
로 변환하여 메타스테빌리티 및 글리치 방지.
2. Glitch-Free Mux 설계
- 글리치 없는 클럭 전환을 위해 래치(Latch) 기반 Mux 또는 Clock Switch Cell을 사용.
- 예제: 래치 기반 Clock Mux
module glitch_free_clock_mux (
input logic clk1, clk2,
input logic sel,
output logic clk_out
);
logic sel_latch;
always @(clk1 or clk2 or sel) begin
if (!clk1 && !clk2) sel_latch = sel; // 클럭이 LOW일 때만 변경
end
assign clk_out = sel_latch ? clk2 : clk1;
endmodule
- 클럭이 LOW일 때만
sel
신호를 업데이트하여 글리치를 방지.
3. Clock Gating을 활용한 안전한 전환
- ASIC 설계에서는 전용 Clock Gating Cell을 사용하여 안전하게 클럭을 전환해야 합니다.
- Clock Gating 기반 안전한 전환 예제
module safe_clock_mux (
input logic clk1, clk2,
input logic sel,
output logic clk_out
);
logic gated_clk1, gated_clk2;
assign gated_clk1 = clk1 & ~sel;
assign gated_clk2 = clk2 & sel;
assign clk_out = gated_clk1 | gated_clk2;
endmodule
- 두 클럭을 AND 게이팅 후 OR 연산하여 안전하게 전환.
요약 (Summary)
문제 | 영향 | 해결 방법 |
---|---|---|
sel 신호의 글리치 |
짧은 클럭 펄스 발생 | sel 신호를 클럭 도메인에 동기화 |
비동기 sel 전환 |
메타스테빌리티, 타이밍 위반 | 2단계 동기화 플립플롭 사용 |
CDC 문제 | 예측 불가능한 동작 | 래치 기반 또는 Clock Switch Cell 사용 |
잘못된 Clock Mux 설계 | 데이터 손실 및 전력 문제 | 전용 Clock Gating Cell 또는 안전한 전환 기법 활용 |
결론
sel
신호에 글리치가 발생하면 잘못된 클럭 선택 및 짧은 펄스 생성 문제가 발생할 수 있습니다.- 이를 방지하기 위해:
sel
신호를 동기화하고,- 글리치 프리 Mux 설계(래치 기반) 또는 전용 Clock Gating Cell을 사용해야 합니다.
- 특히 ASIC/FPGA 설계에서는 Clock Gating을 활용한 안전한 전환 방식을 고려하는 것이 중요합니다.
반응형
'SoC 설계 > Verilog, SystemVerilog' 카테고리의 다른 글
Glitch free enable for clock gating (0) | 2025.02.01 |
---|---|
Combinational Logic in Clock path (1) | 2025.02.01 |
Verilog/Systemverilog에서 real 과 integer 간 형변환 (0) | 2025.01.10 |
배열 시스템 함수들 (0) | 2024.04.21 |
Modelsim Warning (vsim-PLI-3691) (0) | 2024.04.18 |