Clock gating is one of the most popular circuit techniques to reduce power consumption. Clock gating is usually done at the register transfer level (RTL), i.e. clock gating condition is explicitly specified by designers. Automatic synthesis of clock gating in gate level has been less explored, but is certainly more convenient to designers; it can also complement RTL clock gating by extracting additional gating conditions not specified by designers. Clock gating consists of two steps: extraction of gating conditions by merging gating conditions of individual flip-flops; implementation of the gating conditions with minimum amount of additional gates. The first problem turns out to be a multi-objective problem, which we formulate as iterative minimum weight perfect matching. To address the second problem, we aim to utilize the existing combinational logic as much as possible. We propose to extract a factored form (modeled by a factoring tree) of each gating condition, and try to cover the tree by factoring trees of existing combinational logic; the corresponding process is named factored form matching. To assess the effectiveness of the proposed method for merging, we generated Pareto points showing trade-off between the average gating probability and the number of gating conditions. The solutions obtained by the proposed method are roughly close to the hill of Pareto curves. The number of additional gates required to implement gating conditions of a circuit with factored form matching is reduced by 15\% on average compared with division scheme and by 25\% on average compared with implementation without any simplification.
클락 게이팅은 회로의 전력 소모를 줄일 수 있는 매우 일반적인 방법이다. 클락 게이팅은 주로 register transfer level (RTL) 단계에서 이루어진다. 그래서 클락 게이팅 조건은 디자이너가 직접 구체적으로 명시하게 된다. 게이트 레벨에서의 클락 게이팅 합성 자동화 연구는 많이 이루어지지 않았다. 하지만 이는 분명히 디자이너에게 편리함을 가져다 줄 것이다. 한 예로 디자이너가 명시하지 않는 게이팅 조건을 추가로 찾아내서 RTL 단계의 클락 게이팅을 보충할 수 있을 것이다. 클락 게이팅은 두 가지 단계로 이루어진다. 첫 번째는 각각의 플립플랍들의 게이팅 조건들을 묶어서 실제 구현할 게이팅 조건을 찾아내는 단계이고, 두 번째는 게이팅 조건을 실제로 구현하는 단계이다. Multi-objective 문제로 밝혀진 첫 번째 문제는 반복적인 minimum weight perfect matching 수행으로 해법을 찾아냈다. 두 번째 게이팅 조건 구현의 문제에서는 구현 시 추가로 필요한 게이트들의 수를 최소로 하는 것이 주목적인데, 이를 실현하기 위해서 우리는 이미 회로에 구현되어 있는 게이트들을 최대한 활용하는 방법을 생각해냈다. 우리가 제안하는 방법은 우선 각각의 게이팅 조건들의 factoing tree를 찾아내고 이를 회로에 이미 존재하는 로직의 factoring tree로 최대한 채우는 것이다. 우리는 이 과정을 factored form 매칭이라고 이름붙이기로 한다. 첫 번째 문제를 푼 우리 방법의 효과를 확인하기 위해서 우리는 평균 게이팅 확률과 게이팅 조건의 수의 관계를 보여주는 파레토 포인트들을 얻어냈다. 우리가 제안한 방법을 통해 얻은 결과들은 파레토 포인트의 꺾이는 위치에 매우 근접하게 나타났다. 두 번째 문제를 풀기 위해 제안한 factored form 매칭을 통해서 게이팅 조건을 위해 추가되는 게이트들의 수는 division 방법을 사용했을 때에 비해서 평균 약 15\% 정도 감소했고 현재 구현되어 있는 게이트들은 전혀 사용하지 않는 방법에 비해서는 평균 약 25\% 정도 줄어들었다.