본문 바로가기

VLSI/Design

Low power RTL coding guide

현재 computing system 에서 low power 설계의 중요성은 나날이 높아져 가고 있다. 특히 smartphone 과 같은 mobile 생태계에서 AI acceleration 을 위하여 low power 설계는 특히 중요하다.

 

반도체 Front-end design 의 시작인 RTL (Register Transfer Level) coding 에서 가장 중요한 점은 'clock gating' 이라고 생각한다.

clock 은 주기 (period) 를 가진 사각파로써, 0→1 / 1→0 으로 계속 switching 하기 때문에 chip 동작의 50% 이상의 dynamic power 를 소모한다. 따라서, 필요한 순간에만 clock 을 사용하고, 그 외에는 clock 을 off 하는 clock gating design 이 RTL code 설계 단계에서 low power를 결정하는 중요한 feature라고 볼수 있다.

 

아래 예시는, 11-bit 입력 2개를 받아서 12-bit 결과를 출력하는 예시이다.

'else' 조건에 의하여 12-bit result flip-flop 에는 항상 clock (clk) 이 인가되어야 한다. '언제'에만 flip-flop 이 update 되어야 한다는 조건이 특정되지 않기 때문이다.

module adder (
    input clk,
    input reset_n,
    input  [10:0] A,
    input  [10:0] B,
    output [11:0] out
);
    reg [11:0] result;
    always @(posedge clk) begin
        if (!reset_n) begin
            result <= 'd0;
        end
        else begin
            result <= A + B;
        end
    end
    
    assign out = result;
endmodule

 

아래 예시 코드는 'valid_in' 이라는 입력이 추가된 설계이다.

if-else if 로만 구성되어 있기 때문에, result flip-flop은 reset_n 이 1→0 으로 입력되는 falling edge (negedge) 조건 또는 valid_in 이라는 신호가 1 일 때만 동작하면 된다.

따라서, result 에 인가되는 clock enable 조건을 (!reset_n | valid_in) 으로 특정지을 수 있으므로, clock_enable 이 1 일때만 clock 이 인가되도록 설계할 수 있다.

이와 같이 RTL 설계에서 if-else if 로만 flip-flop 을 설계하여 clock 을 필요한 상황에서만 on 하는 것이 low power RTL design 에서 매우 중요하다고 할 수 있다.

 

Synthesis (합성) 과정에서, tool 이 아래와 같이 if-else if 로 기술된 RTL code 에 대해 clock enable 신호를 자동으로 만들어 clock gating cell 을 생성하여 netlist 를 만들어주는데, 이를 inferred clock gating 이라고 한다.

module adder (
    input clk,
    input reset_n,
    input valid_in,
    input  [10:0] A,
    input  [10:0] B,
    output [11:0] out
);
    reg [11:0] result;
    always @(posedge clk) begin
        if (!reset_n) begin
            result <= 'd0;
        end
        else if (valid_in == 1'b1) begin
            result <= A + B;
        end
    end
    
    assign out = result;
endmodule

 

valid_in 이라는 1bit 신호 하나로, 12-bit flip-flop 에 인가되는 clock 을 on/off 할 수 있으므로 이는 low power 설계에 큰 영향을 준다.

 

RTL 설계에는 이와 같이, 동작 관점 (예시에서는 덧셈, functionality 라고도 부름) 뿐만 아니라 chip 이 만들어졌을 때 PPA (Power, Performance, Area) 가 어떻게 될지 예측하면서 진행되어야 하며, 이는 AI agent를 이용하여 설계를 하는 요즘 시대에 특히 engineer 가 가지고 있어야 하는 능력이라고 생각한다.

 

Engineer 에게 전달된 Spec Functionality 만 맞추는 설계는 Google gemini 와 같은 AI agent 이전에 이미 System C 를 이용한 High Level Synthesis (HLS) tool (Cadence Stratus HLS, Siemens Catapult 등) 에서 선보이고 있다.

 

AI 시대에 살아남기 위해서는, functionality 를 넘어서 chip 관점에서 어떤 결과물이 나올지 예측하면서 설계하는 능력이 제일 중요하다고 생각한다.

'VLSI > Design' 카테고리의 다른 글

Synthesis (합성) 이란  (0) 2026.03.29