SoC 설계/Verilog, SystemVerilog

Glitch free enable for clock gating

yztech 2025. 2. 1. 08:37
반응형

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을 사용하고, 비동기 신호는 동기화 회로를 추가하여 안정적인 동작을 보장해야 합니다.
반응형