Semiconductor, Embedded/0. RTL, Synthesis, PnR, Simulation

Synthesis - Clock Gating (이론 및 Syn 후 Simulation 확인)

잇(IT) 2024. 9. 25. 22:06

* 기본적인 Synthesis 과정을 알고 있다는 가정하에 글을 작성하였습니다.


Clock Gating이란?

Synthesis 과정에서 매우 중요한 최적화 작업 중 하나다. 특히 저전력 설계(Low Power Design)에서 필수적인 기법이다.

특정 조건이 충족될 때만 클럭 신호가 해당 FF으로 전달되도록 하는 것을 의미한다.

(* Enable 신호에 따라 Clock이 동작한다고 간단하게 생각하면 된다.)

Clock Gating은 모바일 기기나 저전력 디자인에서 전력 관리와 배터리 수명을 개선하는 데 중요한 역할을 한다.

위 그림의 (1) 첫번째와 같이 일반적으로 Clock이 계속해서 FF에 전달될 경우 0->1->0과 같이 상태 전환이 계속해서 일어나기 때문에 전력이 계속해서 소모되게 된다.

(2) 두번째를 보게 되면 Enable 신호를 결정하는 논리 회로를 통해 Enable 신호의 결과에 따라 Clock 신호를 FF에 전달할지 말지 결정하게 된다.

Enable의 신호를 결정하는 논리 회로는 입력을 저장하기 위한 회로가 없기 때문에 상대적으로 회로 구조가 복잡한 FF의 값이 Switching될 때의 전력 소모보다 적기 때문에 전력 절감에 이득이 있다.


SDC Clock Gating 적용

set_db lp_insert_clock_gating true

 

- RTL 설계 이후 Synthesis 과정에서 SDC 파일에 위 Clock Gating 구문을 추가함으로서 Clock Gating을 적용 시킬 수 있다. (위와 같이 선언할 경우 모든 Clock에 Clock Gating을 적용하고, '.'을 통해 Clock Gating을 원하지 않은 Clock을 제외 시킬 수 있다.)


Netlist 확인

SDC 파일에 Clock Gating 적용 후 Synthesis된 Netlist 파일

Synthesis 이후 Netlist를 보게 되면 Clock Gating 관련 모듈이 생성된 것을 확인할 수 있다.

(위 모듈은 자동으로 Enable 신호에 따라 Clock을 전달 혹은 중지 시키는 회로가 구성되어 있을 것이다.)

Clock 신호에 해당하는 sclk가 Inverter를 통해 sclk_neg Pin으로 출력되고

n_79(wire)
sclk_neg
rc_gclk

위와 같이 Schematic을 통해 n_79(wire)를 통해 enable 신호가 전달되고, sclk_neg 입력 신호가 enable 신호에 따라 rc_gclk 출력 Pin을 통해 출력 신호로 나올 것이다.

 

 


Simulation 확인

Function Simulation

RTL 수준에서의 Function Simulation을 돌리게 되면 별도의 Clock Gating 없이 sclk이 사용되는 것을 확인할 수 있다.

 

Pre_Layout Simulation

Synthesis 이후 Netlist, SDF 파일을 이용한 Pre_Layout_Simulation을 돌리게 되면 위와 같이 rc_gclk, rc_gclk_892, rc_gclk_894 Pin이 새롭게 생성되고 rc_gclk_894와 같이 Clock이 필요한 경우에만 상태 변화가 발생하는 것을 확인할 수 있다.

 

 

728x90