본문 바로가기
VLSI/Common

[VLSI] ASIC Flow

by 리미와감자 2024. 10. 16.

[VLSI] ASIC Flow

 

 

 

 

1. Specification

 

  • 고객 또는 시스템 요구 사항에 따라 설계할 Digital 회로의 기능, 성능, 전력 소비, 크기 등의 사양을 정의한다. 
  • 이 단계에서는 전체 시스템의 기능적 블록 다이어그램과 인터페이스를 구체화한다.
  • 주요 항목
    • 기능 요구 사항 (Functional Requirements) : 고객이 요구하는 기능 구현. ex) 각종 Algorithm, Logic
    • 성능 요구 사항 (Performance Requirements) : 고객이 요구하는 성능, Chip의 성능 등. ex) Clock Frequency, Latency
    • 전력 요구 사항 (Power Requirements)
    • 면적 요구 사항 (Area Requirements)
    • 프로세스 기술 (Process Technology) : 어느 반도체 공정을 사용할 것인가?
    • 비용 (Cost)
    • 환경 조건 (Environmental Conditions) : Chip이 작동할 환경 조건 정의
    • 인터페이스 요구 사항 (Interface Requirements) : Chip이 외부 시스템과 어떻게 통신할 것인가? ex) SPI, I2C
    • 타이밍 요구 사항 (Timing Requirements)
    • 검증 계획 (Verification Plan)
    • 안전성 및 신뢰성 요구 사항 (Safety & Reliability Requirements)

 

2. Architecture Design

  • 시스템 전체의 최적화 구조를 정의하는 단계이다.
  • Functional Block들을 정의하고, 각 Block 간의 인터페이스와 Datapath을 정의한다.
  • Clock domain이나 타이밍 제약 사항 등도 고려하여 시스템의 효율성을 극대화하는 구조로 설계한다.

 

3. RTL Design

  • 구현할 시스템의 Spec과 Architecture를 Register Transfer Level(RTL)로 구체화하는 과정이다.
  • 주로 Verilog/SystemVerilog같은 HDL를 사용하여 구현한다.
  • 설계 요소
    • Data Path 설계
    • Control Path 설계 : 회로 동작을 제어하는 제어 신호를 정의. 주로 FSM으로 설계.
    • Pipeline 설계
    • Clock/Reset 설계
    • Memory 설계
    • 모듈화 : RTL 설계는 독립적인 기능을 담당하는 모듈로 나누어 설계.
    • Timing 및 Delay 요소 고려Test Point 및 Debugging 요소 추가 계획 : 주로 Scan Chain, BIST, JTAG 등의 DFT 기법 사용
  • 필요한 경우 C/C++, Python으로 먼저 Functional Modeling을 한다. 
    • 알고리즘 검증 : 복잡한 알고리즘은 미리 검증할 수 있고, RTL 설계 전에 개선 사항을 도출하여 최적화한다.
    • 성능 예측 : 성능을 어느 정도 제공할지 예측하는 데 도움을 준다.
    • Functional Verification : 추후, Functional Verification 단계에서 Reference Model(Golden Model)로 사용된다.
  • HDL의 문법적 오류, 비효율적인 코드 패턴을 발견하기 위해 Lint 검증이 수행된다.

 

 

4. Functional Verification

  • Functional Verification은 반도체 설계 과정에서 가장 중요하고 시간이 많이 소요되는 단계이다.
  • RTL 코드가 시스템 사양에 맞게 정확히 동작하는지 확인하는 단계이다.
  • 설계된 회로가 의도한 기능을 제대로 수행하는지 검증하는 데 중점을 둔다.
  • 설계 과정에서 발생한 논리적 결함을 찾아내어, 실리콘 구현 단계에서 발생할 수 있는 막대한 비용과 시간이 소요되는 것을 막을 수 있다.
  • C/C++, Python 기반의 Functional Model은 Functional Verification 단계에서 Golden Model 역할을 한다.
  • 검증 기법
    1. Simulation 기반 검증 : 가장 기초적인 방법. Testbench에서 Test Case를 생성하여 RTL에 입력한 후, 파형을 확인한다.
    2. Coverage-Driven Verification(CDV) : Test Case를 생성하여 테스트 범위를 넓히고, 설계의 모든 부분이 제대로 검증되었는지 확인한다. Code Coverage/Functional Coverage에 기반한 검증을 의미한다. 검증 환경을 구축하기 위해 주로 UVM 프레임워크가 사용된다.
      1. Code Coverage : Simulation에서 얼마나 많은 부분의 RTL 코드가 실행되었는지 측정한다.
      2. Functional Coverage : 특정 기능이나 시나리오가 제대로 검증되었는지 측정하는 방법으로, Spec에서 정의된 기능적 요구 사항이 실제로 검증되었는지 확인한다. 주로 Code Coverage와 함께 사용된다.
    3. Assertion-Based Verification(ABV) : Assertion을 삽입하여 검증한다. 데이터 유효성 검사나, 시뮬레이션 중 실시간으로 오류를 감지할 수 있다.
    4. Formal Verification : 설계의 정확성을 수학적으로 검증한다. 모든 가능한 입력과 상태를 고려하여 논리적으로 오류가 없는지 확인한다. Synthesis 후에 진행된다.
    5. UVM(Universal Verification Methodology) : SystemVerilog 기반의 검증 환경을 표준화한 검증 방법론이다. 검증 엔지니어가 모듈화된 테스트벤치를 설계하여 재사용성과 유연성을 극대화할 수 있다.
  • Synthesis 전 여러 Clock Domain 간의 데이터 전송을 안전하게 하고, Metastability를 방지하기 위해 CDC 검증을 수행한다.

 

5. Synthesis

  • RTL(레지스터 전송 레벨) 설계에서 하드웨어 구현이 가능한 Gate Level Netlist로 변환하는 단계이다.
  • 입력 자료
    1. RTL Code
    2. Cell Library : Cell의 크기와 Delay 등의 특성을 정의한 파일
    3. Constraints File : Timing, Area, Power 등과 같은 정보를 포함하는 파일
  • 합성 과정
    1. 논리 합성 (Logic Synthesis) : Logic Gate와 Flip Flop으로 변환하는 과정
    2. 물리 합성 (Physical Synthesis) : 논리 합성 후, Gate Level Netlist를 기반으로 하여 실제 Chip Layout에 적합하도록 최적화하는 과정. P&R(Place and Route) 단계와 통합하여 실제 회로의 배치를 고려.
  • 합성 결과
    1. Gate Level Netlist : Logic Gate와 Flip Flop으로 구성
    2. SDF (Standard Delay Format) 파일 : Netlist에 대한 Timing 분석 결과로 GLS(Gate Level Simulation)와 STA(Static Timing Analysis)에 활용
    3. Synthesis Report 
      1. Timing Report : Slack 확인 
      2. Area Report : Gate Count 확인
      3. Power Report

 

 

6. DFT(Design For Testability)

  • 제조된 Chip의 테스트를 더 쉽게 수행할 수 있도록 설계 단계에서 추가되는 기술을 말한다.
  • 복잡한 회로일수록 모든 경로와 요소를 테스트할 수 없기때문에 DFT는 테스트의 효율성을 높이기 위해 설계에 반영된다.
  • 주요 기법
    1. 스캔 설계 (Scan Design) : 회로 내부의 상태를 관찰하거나 제어할 수 있는 Scan Flip-Flop을 사용하여 테스트 가능성을 높이는 방법이다. 일반 Flip-Flop 대신 Scan Flip-Flop을 사용함으로써 회로의 모든 상태를 외부에서 직접 관찰하거나 조작할 수 있다.
      1. 스캔 체인 (Scan Chain) : 회로 내 모든 Flip-Flop을 Chain처럼 연결하여 Test Vector를 Shift 방식으로 전달한다. Scan Chain을 통해 회로의 상태를 읽어내고 입력 신호를 전달할 수 있다.
      2. 테스트 벡터 (Test Vector) : 특정 입력 신호를 회로에 전달하고 그에 따른 출력을 확인하는 데이터 벡터이다.
    2. BIST (Built-In Self-Test) : 회로 내부에 자체적으로 테스트할 수 있는 회로를 추가하는 방법이다. 주로 메모리나 특정 IP 모듈을 테스트할 때 많이 사용된다. 칩 내부에서 테스트가 이루어지므로 테스트 비용과 시간을 절감할 수 있다.
    3. Boundary Scan (JTAG)

 

 

7. GLS(Gate-level Simulation)

  • 합성된 Gate-level Netlist를 사용하여 회로의 기능적, 논리적, 타이밍 동작을 검증하는 단계이다.
  • 설계된 회로가 예상대로 동작하는지 확인한다.
  • GLS 목적
    1. Function 검증 : RTL과 동일하게 동작하는지 검증
    2. 타이밍 검증 : Race Condition, Timing Violation 확인
    3. 전력 소모 분석(Power Simulation)
    4. DFT 구조 검증
  • 입력 자료
    1. Gate Level Netlist
    2. Library 파일
    3. SDF 파일
    4. Testbench
  • GLS 종류
    1. Pre-layout Simulation(Pre-Sim)
      1. Layout(P&R) 전에 진행하는 Gate-level Simulation이다.
      2. Pre-netlist와 SDF 파일로 시뮬레이션을 진행한다.
    2. Post-layout Simulation(Post-Sim)
      1. Layout(P&R) 후에 진행하는 Gate-level Simulation이다.
      2. Post-netlist와 SDF 파일로 시뮬레이션을 진행한다.
    3. Option
      1. SDF 파일 : $sdf_annotate("design.sdf", instance_name) : SDF 파일 사용하여 경로 지연을 반영한다.
      2. Delay Mode : ‘delay_mode_path’, ‘delay_mode_unit’ 같은 옵션을 사용하여 시뮬레이션을 진행한다.
      3. Delay Model : WST(Worst-case delay), TYP(Typical delay), BST(Best-case delay)

 

 

8. Formal Verification

  • GLS에서는 모든 가능한 입력 조합을 검토할 수 없기 때문에 Corner Case나 복잡한 오류를 놓칠 수 있다.
  • Formal Verification은 수학적 방법을 사용하여 모든 가능한 상태와 경로를 검토하여 설계 정확성을 검증한다.
  • Equivalence Check
    1. RTL과 Pre-netlist가 동일한 기능을 수행하는지 확인하여 Synthesis 과정에서 발생한 오류를 방지할 수 있다.
    2. RTL과 Post-netlist, Pre-netlist와 Post-netlist가 동일한 기능을 수행하는지 확인하여 P&R 과정에서 발생한 오류를 방지할 수 있다.
    3. Formality에서 Equivalence Check 외에도 다양한 기능을 지원하지만 주로 Equivalence Check를 사용한다.
  • Tool : Synopsys의 Formality

 

 

9. STA(Static Timing Analysis)

  • STA는 매우 중요한 과정으로 회로의 타이밍 특성을 분석하고 최적화하는 방법이다.
  • STA는 Simulation을 수행하지 않고도 설계의 타이밍 문제를 확인할 수 있다.
  • GLS가 설계의 기능적 동작을 검증한다면, STA는 회로의 타이밍 특성을 분석하여 클럭 주기 내에 모든 신호가 제대로 전송되는지 검증한다.
  • 입력 자료
    1. Gate Level Netlist
    2. SDC 파일
    3. Library 파일
    4. SDF 파일
  • STA의 목적
    • 타이밍 정확성 검증, 타이밍 경로 분석, 성능 개선
  • STA의 주요 개념
    1. Timing Path (타이밍 경로)
      1. Critical Path : 가장 긴 지연을 가진 경로. 이 경로의 지연이 전체 회로의 성능을 제한한다.
      2. Non-critical Path : 이 경로는 성능에 큰 영향을 미치지 않는다.
    2. Setup Time, Hold Time
    3. Delay : 각 회로 요소의 동작 속도, 입력에서 출력까지의 지연을 포함한다.
    4. Slack : 특정 경로의 Timing margin을 의미하며, 클럭 주기와 경로 지연의 차이를 의미한다. Slack이 양수이면 해당 경로는 Timing을 만족하며, 음수이면 Timing이 실패한 것이다.
  • STA 종류
    1. Pre-layout STA(Pre-STA) : 배선 지연(Interconnect Delay) 무시
    2. Post-layout STA(Post-STA) : 배선 지연(Interconnect Delay) 고려
  • Tool : Synopsys의 PrimeTime

 

 

10. Floor Planning

  • Chip의 물리적 Layout을 계획하는 단계이다.
  • 전체 설계의 성능, 전력 소비, 면적 및 신뢰성을 최적화한다.

 

 

11. P&R(Place and Route)

  1. Placement
    • 회로의 각 구성 요소를 칩의 특정 위치에 배치하여 최적의 성능을 달성하는 것이다.
    • 배치 결과는 각 구성 요소의 좌표와 함께 제공된다.
  2. Routing
    • 배치된 구성 요소를 전기적으로 연결하고 신호를 전달하는 것이다.
    • 배선 결과는 최종 설계의 물리적 Layout 정보를 포함하는 Layout Data 형식(GDSII)으로 제공된다.

 

 

12. Physical Verification

  • P&R 단계 후에는 DRC(Design Rule Check)와 LVS(Layout vs. Schematic) 등의 검증 과정을 통해 배치 및 배선이 설계 규칙을 준수하고 있는지 확인한다.
  • DRC(Design Rule Check) : Layout이 Design Rule에 맞게 배치되었는지 검증한다.
  • LVS(Layout vs. Schematic) : Layout이 Schematic과 논리적 기능이 일치하는지 검증한다
  • ERC(Electrical Rule Check) : 내부에서 전기적으로 끊어짐이 없는지 검증한다.

 

 

13. Tape-out

  • 최종 설계 데이터를 반도체 제조 공장에 전달하는 과정이다.
  • Physical Verification이 완료된 후에 진행된다.
  • Tape-out 과정
    1. 최종 설계 데이터 준비 : 설계 데이터는 일반적으로 GDSII, OASIS와 같은 포맷으로 변환된다.
    2. 설계 데이터 검증 : 최종 설계 데이터가 올바르게 형성되었는지 지속적으로 확인한다. 이 과정에서는 DRC, LVS, ERC와 같은 검증 과정을 다시 수행할 수 있다. 모든 오류가 수정되었는지 확인하고, 제조 공정에서 요구하는 규칙과 기준을 준수하는지 점검한다.
    3. 제조 정보 포함 : 테이프 아웃 데이터에는 설계의 특성과 함께 공정 기술에 대한 정보도 포함된다. 이 정보는 제조 공장에서 칩을 생산하는 데 필요한 지침을 제공한다.
    4. 제조 공장에 제출 : 모든 준비가 완료되면, 최종 설계 데이터와 함께 관련 문서(설계 설명서, 공정 기술 정보 등)를 반도체 제조 공장에 제출한다. 이 단계에서 제조 공장은 설계를 분석하고, 제조 공정을 계획하여 실제 생산에 들어간다.


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

Verilog Simulator 종류 - Commercial  (0) 2024.03.22
Verilog Simulator 종류 - Open Source  (0) 2024.03.21

댓글