본문 바로가기

반도체 설계에서 넷리스트(Netlist)는 전자 회로의 연결 정보를 담고 있는 파일입니다. 넷리스트는 기본적으로 회로의 모든 소자와 그 연결 관계를 나열합니다. UPF(Universal Power Format)가 적용된 넷리스트는 저전력 설계를 위한 전원 관리 정보가 포함된 넷리스트입니다.

UPF 파일 소개

기본 넷리스트 예제

먼저, 기본적인 넷리스트 파일을 살펴보겠습니다. 여기서는 간단한 AND 게이트 회로의 넷리스트를 예로 들겠습니다.

기본 넷리스트 (basic_netlist.v)

module simple_and (
    input a,
    input b,
    output c
);
    assign c = a & b;
endmodule

이 기본 넷리스트는 simple_and 모듈을 정의하고, 입력 ab를 논리곱하여 출력 c로 전달합니다.

UPF가 적용된 넷리스트 예제

UPF가 적용된 넷리스트는 저전력 설계를 지원하기 위해 전원 관리 정보가 추가된 넷리스트입니다. 다음은 동일한 AND 게이트 회로에 UPF를 적용한 예제입니다.

UPF 파일 (power.upf)

UPF 파일에서는 전원 도메인, 전원 모드, 전원 스위치 등을 정의합니다.

# Define power domains
create_power_domain PD1 -elements {u1}
create_power_domain PD2 -elements {u2}

# Define power switches
create_power_switch PS1 -domain PD1 -input_supply {VDD} -output_supply {VDD_PD1} -control {VDD_CTL}

# Define power states
create_supply_port VDD
create_supply_port VDD_PD1
create_supply_port VDD_CTL

UPF가 적용된 넷리스트 (upf_netlist.v)

기본 넷리스트에 전원 관리 정보와 관련된 요소를 추가합니다.

module simple_and (
    input a,
    input b,
    output c,
    input VDD_PD1,    // Power domain input
    input VDD_CTL     // Control signal for power switch
);
    wire powered_a;
    wire powered_b;
    wire powered_c;

    // Power switch control logic
    assign powered_a = VDD_PD1 ? a : 1'b0;
    assign powered_b = VDD_PD1 ? b : 1'b0;

    // AND gate operation under power control
    assign powered_c = powered_a & powered_b;
    assign c = powered_c;
endmodule

이 UPF가 적용된 넷리스트에서는 전원 도메인(VDD_PD1)과 전원 스위치 제어 신호(VDD_CTL)를 추가로 정의하고, 회로의 동작을 전원 상태에 따라 제어합니다.

요약

  • 기본 넷리스트는 회로의 소자와 그 연결 관계만을 포함합니다.
  • UPF가 적용된 넷리스트는 기본 넷리스트에 전원 관리 정보가 추가된 형태입니다. UPF 파일을 통해 전원 도메인, 전원 모드, 전원 스위치 등을 정의하고, 넷리스트에서 이를 반영하여 전원 상태에 따라 회로의 동작을 제어합니다.

UPF 파일 Netlist 적용 방법

UPF(Universal Power Format)를 일반 게이트 레벨 넷리스트에 적용하여 전원 관리 정보를 추가하는 과정은 전자설계자동화(EDA) 툴을 사용하여 이루어집니다. 이러한 EDA 툴은 주로 Synopsys, Cadence, Mentor Graphics 등에서 제공하며, 각각의 툴은 UPF 파일을 넷리스트에 적용하고 검증하는 기능을 갖추고 있습니다. 여기서는 Synopsys의 Design Compiler와 PrimeTime을 예로 들어 설명하겠습니다.

단계별 과정

  1. 넷리스트 준비: 게이트 레벨 넷리스트 파일과 해당 디자인의 라이브러리 파일을 준비합니다.
  2. UPF 파일 작성: 저전력 설계를 위한 UPF 파일을 작성합니다. 이 파일에는 전원 도메인, 전원 스위치, 레벨 시프터 등의 전원 관리 정보가 포함됩니다.
  3. EDA 툴 설정: Design Compiler나 PrimeTime과 같은 EDA 툴에서 UPF 파일을 불러오고, 넷리스트에 적용할 설정을 구성합니다.
  4. UPF 적용: EDA 툴을 사용하여 UPF 파일을 넷리스트에 적용합니다.
  5. 검증 및 분석: UPF가 적용된 넷리스트를 검증하고, 전력 분석을 수행합니다.

예제: Synopsys Design Compiler를 사용한 UPF 적용

1. 넷리스트 파일 (gatelevel_netlist.v)

module simple_and (
    input a,
    input b,
    output c
);
    assign c = a & b;
endmodule

2. UPF 파일 (power.upf)

# Define power domains
create_power_domain PD1 -elements {U1}
create_power_domain PD2 -elements {U2}

# Define level shifter
create_level_shifter LS1 -domain PD1 -to PD2

# Define power switches
create_power_switch PS1 -domain PD1 -input_supply {VDD} -output_supply {VDD_PD1} -control {VDD_CTL}

# Define power states
create_supply_port VDD
create_supply_port VDD_PD1
create_supply_port VDD_CTL
create_supply_port VDD_PD2

3. EDA 툴 설정 및 UPF 적용

Synopsys Design Compiler에서 UPF 파일을 넷리스트에 적용하는 과정을 설명합니다.

  1. Design Compiler 환경 설정 파일 (dc_setup.tcl)
# Set up Design Compiler environment
set_app_var search_path {/path/to/library/files}
set_app_var target_library {library.db}
set_app_var link_library {* library.db}
  1. UPF 적용 및 합성 스크립트 (synthesize.tcl)
# Read the Verilog netlist
read_verilog gatelevel_netlist.v

# Read the UPF file
read_upf power.upf

# Elaborate the design
elaborate simple_and

# Check UPF integration
check_power_intent

# Synthesize the design
compile_ultra

# Write the synthesized netlist
write -format verilog -hierarchy -output synthesized_netlist.v
  1. 스크립트 실행
dc_shell -f dc_setup.tcl
dc_shell -f synthesize.tcl

4. 검증 및 분석

합성된 넷리스트와 UPF가 올바르게 적용되었는지 확인하기 위해 PrimeTime을 사용할 수 있습니다.

  1. PrimeTime 설정 파일 (pt_setup.tcl)
# Set up PrimeTime environment
set_app_var search_path {/path/to/library/files}
set_app_var target_library {library.db}
set_app_var link_library {* library.db}
  1. UPF 적용 및 타이밍 분석 스크립트 (timing_analysis.tcl)
# Read the synthesized Verilog netlist
read_verilog synthesized_netlist.v

# Read the UPF file
read_upf power.upf

# Read SDC (Synopsys Design Constraints) file
read_sdc design_constraints.sdc

# Perform static timing analysis
update_timing
report_timing
  1. 스크립트 실행
pt_shell -f pt_setup.tcl
pt_shell -f timing_analysis.tcl

요약

  1. 넷리스트 준비: 게이트 레벨 넷리스트를 준비합니다.
  2. UPF 파일 작성: 전원 관리 정보를 포함한 UPF 파일을 작성합니다.
  3. EDA 툴 설정: Design Compiler나 PrimeTime과 같은 툴에서 필요한 설정을 구성합니다.
  4. UPF 적용: UPF 파일을 넷리스트에 적용하고, 합성 및 검증 과정을 수행합니다.
  5. 검증 및 분석: 합성된 넷리스트에 대해 전력 분석과 타이밍 분석을 수행하여 UPF 적용이 올바르게 이루어졌는지 확인합니다.

이 과정들을 통해 게이트 레벨 넷리스트에 UPF를 적용하고, 저전력 설계를 위한 전원 관리 정보를 통합할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.