반응형
Clock Gating Cell의 Enable이 Glitch하면 발생하는 문제점
Clock Gating Cell의 enable
신호에 글리치(Glitch)가 발생하면 심각한 타이밍 문제와 기능적 오류가 발생할 수 있습니다.
주요 문제점
1. Clock Glitch (잘못된 클럭 펄스)
enable
신호가 글리치가 발생하면, 의도하지 않은 짧은 클럭 펄스가 생성될 수 있습니다.- 이러한 펄스가 플립플롭(FF)으로 전달되면, 데이터 손실 또는 타이밍 위반을 유발할 수 있습니다.
2. Metastability & Setup/Hold Time Violation
enable
신호가 비동기 신호이거나 클럭 엣지와 정확히 정렬되지 않으면, 클럭 게이팅 셀 내부의 래치가 메타스테이블(Metastable) 상태에 빠질 수 있습니다.- 결과적으로 예측 불가능한 동작을 초래하고 타이밍 위반을 발생시킬 수 있습니다.
3. Power Consumption 문제
- 클럭이 예상보다 더 많은 펄스를 생성하면 불필요한 스위칭 활동(Switching Activity) 이 증가하여 전력 소모가 늘어납니다.
- 특히 동적 전력(Dynamic Power) 이 크게 증가할 수 있습니다.
해결 방법
1. Enable 신호를 동기화하기 (Synchronize Enable Signal)
enable
신호가 클럭 도메인과 다를 경우, 반드시 플립플롭을 사용하여 동기화해야 합니다.- 예제: 2단계 동기화 회로
async_enable
을 두 개의 FF을 거쳐sync_enable
로 변환하여 글리치를 방지함.
module sync_enable ( input logic clk, input logic async_enable, output logic sync_enable ); logic enable_ff1; always @(posedge clk) begin enable_ff1 <= async_enable; sync_enable <= enable_ff1; end endmodule
2. Glitch-Free Latch 기반 Clock Gating Cell 사용
- 클럭 게이팅 셀은 내부적으로 래치(Latch) 를 사용하여 enable 신호를 안정화합니다.
- 예제: Glitch-Free Clock Gating 구조
module clock_gating (
input logic clk,
input logic enable,
output logic gated_clk
);
logic latch_out;
always @(clk or enable) begin
if (!clk) latch_out = enable; // 클럭이 LOW일 때 enable을 래치
end
assign gated_clk = clk & latch_out;
endmodule
- 클럭이 LOW일 때 enable 값을 래치하여, HIGH일 때 변경되지 않도록 함.
3. ASIC/FPGA에서 공식 Clock Gating Cell 사용
- FPGA 또는 ASIC 설계에서는 전용 Clock Gating Cell을 사용해야 합니다.
- 예를 들어, Synopsys 라이브러리의
CLKGATE
셀을 활용하면 내부적으로 글리치를 방지하는 래치가 포함되어 있습니다.
4. Clock Gating을 최소화하고 Enable Logic 사용
- 클럭 게이팅보다 Enable Logic (
if(enable)
)을 선호하는 것이 더 안전할 수 있습니다. - 예제:
always @(posedge clk) begin
if (enable)
data_out <= data_in;
end
요약
문제 | 영향 | 해결 방법 |
---|---|---|
enable 신호의 글리치 |
잘못된 클럭 펄스 발생 | Enable 신호를 클럭 도메인에 동기화 |
enable 이 비동기 신호일 경우 |
메타스테빌리티, 타이밍 위반 | 2단계 동기화 플립플롭 사용 |
잘못된 클럭 게이팅 | 예상치 못한 동작, 높은 전력 소모 | 글리치 방지 래치 기반 Clock Gating Cell 사용 |
결론
enable
신호의 글리치는 잘못된 클럭 펄스와 예측 불가능한 동작을 유발하므로 반드시 동기화해야 합니다.- 전용 Clock Gating Cell을 사용하고, 비동기 신호는 동기화 회로를 추가하여 안정적인 동작을 보장해야 합니다.
반응형
'SoC 설계 > Verilog, SystemVerilog' 카테고리의 다른 글
Glitch free selection in Clock Mux (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 |