스킬캠퍼스

오늘 끝나면

ASIC Flow와 PPA

  • ASIC Flow와 PPA의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 ASIC이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

RTL→게이트→배치→배선 — 성능·전력·면적 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 40

ASIC Flow와
PPA

FPGA는 같은 칩을 재구성해 쓴다. ASIC은 한 가지 일에만 쓰는 전용 칩이다.
RTL 코드가 합성, 배치, 배선, timing 검증을 거쳐 실물 마스크가 된다.
그 모든 결정은 결국 성능과 전력과 면적(PPA)의 균형으로 수렴한다.

P.01반도체 설계 · 40

ASIC, 한 가지 일만 하는 전용 칩

CPU는 무엇이든 한다. FPGA는 회로를 다시 짤 수 있다. ASIC은 단 하나에 박제된다.

ASIC은 Application-Specific Integrated Circuit, 특정 용도 전용 집적회로다.
영상 코덱, 네트워크 스위치, AI 추론 같은 한 가지 일만 하도록 회로를 굳혀 찍는다.
한 번 찍으면 못 바꾼다. 대신 그 일에서는 범용 칩을 압도한다.

전용으로 깎으니 군더더기 회로가 없고, 같은 일을 더 빠르게, 더 적은 전력으로, 더 작은 면적에 해낸다.
대가는 초기 비용이다. 마스크 한 벌에 수십억이 들기 때문에 대량 생산일 때만 수지가 맞는다.
적게 만들 거면 FPGA, 수백만 개 찍을 거면 ASIC이다. 물량이 갈림길이 된다.

범용·재구성·전용, 세 갈래
범용·재구성·전용, 무엇을 포기하나
CPU · 범용한 칩으로 다 한다
유연성
무엇이든
효율
낮음
비용
낮음
FPGA · 재구성회로를 다시 짠다
유연성
재배선 가능
효율
중간
비용
중간
ASIC · 전용한 일만 압도적이다
유연성
고정 (못 바꿈)
효율
최고
비용
높음 (대량시 저렴)
수백만 개 찍을 때만 ASIC이 수지가 맞는다. 물량이 갈림길이다
P.02반도체 설계 · 40

ASIC Flow, RTL에서 마스크까지

칩이 실물이 되는 길에는 정해진 순서가 있다. 추상에서 시작해 한 단계씩 물리로 굳는다.

RTL은 동작을 코드로 적은 것이다. Verilog와 VHDL로 “무엇을 한다”만 기술하고, 게이트도 좌표도 없다.
논리 합성이 그 코드를 표준셀(게이트) 그물로 펼친다. 여기서 코드가 처음으로 진짜 회로가 된다.

배치(placement)는 그 셀 수백만 개에 좌표를 붙인다. 어디에 앉힐지 정하면서 면적이 확정된다.
배선(routing)은 셀 사이를 실제 전선으로 잇는다. 여기서 전선 지연이 더해져 timing이 확 나빠진다.
마지막 timing 검증(sign-off)에서 모든 경로가 클럭 안에 도착하는지 확인하면 마스크로 넘어간다.

코드 → 게이트 → 좌표 → 전선
ASIC Flow, 추상에서 마스크까지
RTL코드

동작을 Verilog로 기술한다

추상
논리 합성게이트

코드를 표준셀 그물로 편다

회로
배치좌표

셀을 칩 위에 앉힌다

위치
배선전선

셀 사이를 전선으로 잇는다

연결
Timing 검증sign-off

클럭 안 도착을 확인한다

실물
단계마다 추상이 한 겹씩 벗겨지고 물리가 채워진다
P.03반도체 설계 · 40

Timing 검증, 클럭 안에 도착하는가

회로가 다 깔려도 끝이 아니다. 신호가 제때 도착하지 못하면 칩은 틀린 값을 낸다.

한 클럭 동안 신호는 어떤 플립플롭에서 출발해 게이트와 전선을 지나 다음 플립플롭에 닿아야 한다.
그 모든 경로 중 가장 느린 경로가 임계경로(critical path)다. 칩 속도를 정하는 병목이다.

slack = 클럭 주기 − 임계경로 지연이다.
slack이 0 이상이면 신호가 클럭 안에 도착하고, sign-off를 통과한다.
음수면 늦게 도착해 틀린 값을 잡는 타이밍 위반이다. 셀을 키우거나 경로를 줄이거나 클럭을 늦춰 다시 맞춘다.
배선 전에는 통과로 보이던 게 전선 지연이 더해지며 위반으로 바뀌는 일이 흔하다. 그래서 배선 후 검증이 진짜다.

임계경로 vs 클럭 주기 · slack
Timing, 가장 느린 경로가 속도를 정한다
경로 AALU 한 단
slack +38
경로 BALU + 시프트
slack +19
임계경로곱셈기, 가장 느림
slack +4
막대가 클럭 주기(끝)를 넘으면 slack이 음수, 즉 타이밍 위반이다
P.04반도체 설계 · 40

직접 flow를 돌리고 PPA를 본다

16비트 CPU 코어 한 블록을 ASIC flow에 태우면 단계마다 수치가 굳는다.

먼저 셀 라이브러리를 고른다. HVT는 느리지만 저전력이고, LVT는 빠르지만 고전력이다. 같은 RTL이 다른 칩이 된다.
배선까지 끝내면 timing이 목표(4ns)를 통과할지 먼저 예측해 본다.

STEP마다 합성, 배치, 배선, timing을 거치며 면적과 지연과 전력이 바뀐다.
배선 단계에서 지연이 가장 크게 뛰고, slack 막대와 PPA 점수가 따라 움직인다.

라이브러리 선택 · 예측 · STEP + 근거 패널
ASIC Flow · 16비트 CPU 코어, 코드를 실물로
셀 라이브러리, 같은 RTL, 다른 표준셀
예측 먼저, 배선까지 끝내면 timing이 목표(4ns)를 통과할까?
flow, 추상에서 실물로0 / 4 단계
RTL코드
합성게이트
배치좌표
배선전선
Timing검증
블록 한 칸이 굳어가는 모습, 활성 단계만 강조
module cpu16(...) reg [15:0] r; alu a(...);endmodule
RTL, 동작을 코드로 기술(좌표 없음)
근거 패널, 단계마다 갱신되는 면적 · 지연 · 전력
면적
µm²
임계경로
ns
전력
mW
slack = 목표 4ns − 임계경로

STEP을 눌러 합성부터 시작

PPA 점수, HVT 최종 기준64 /100
성능 Performance
59
전력 Power
90
면적 Area
43

RTL은 코드일 뿐, STEP을 눌러 합성·배치·배선을 거치며 실물 수치가 채워진다. 이 셀 라이브러리 선택이 최종 MyChip 테이프아웃에 들어간다.

P.05반도체 설계 · 40

PPA, 성능·전력·면적의 삼각 균형

칩 설계의 모든 결정은 결국 성능과 전력과 면적이라는 세 축으로 환원된다. 이게 PPA다.

Performance는 속도다. 임계경로를 줄여 더 높은 클럭을 돌린다.
Power는 전력이다. 동적 전력과 누설 전력을 함께 줄여야 하고, 발열과 배터리를 가른다.
Area는 면적이다. 작을수록 웨이퍼 한 장에서 칩이 더 나와 단가가 싸진다.

셋은 서로 당긴다. 빠르게 하려고 큰 셀(LVT)을 쓰면 전력이 오르고, 면적을 줄이면 배선이 빽빽해져 지연이 는다.
하나를 좋게 하면 다른 둘이 나빠지는 줄다리기다. 정답은 없고 용도가 정한다. 모바일은 전력, 데이터센터는 성능, 저가 칩은 면적이다.
좋은 설계란 이 셋의 균형점을 용도에 맞게 잡는 일이다. 그게 반도체 설계의 마지막 감각이다.

Q. PPA가 뜻하는 세 가지는?정답은 성능(Performance) · 전력(Power) · 면적(Area)이다.
빠르게(성능) 만들고, 적게 먹고(전력), 작게(면적) 하는 셋을 동시에 만족시키기는 어렵다.
하나를 좋게 하면 보통 다른 둘이 나빠진다. 용도에 맞는 균형점을 찾는 게 설계의 핵심이다.
셋을 동시에 만족시키는 줄다리기
PPA, 셋의 줄다리기
PerformanceAreaPower균형점
성능 ↑전력 ↑ · 면적 ↑

빠른 큰 셀은 전력과 면적을 먹는다

면적 ↓지연 ↑

빽빽하면 배선이 길어져 느려진다

전력 ↓성능 ↓

저전력 셀은 대개 느리다

모바일은 전력, 데이터센터는 성능, 저가 칩은 면적이다. 용도가 정한다

3줄 요약

  1. 1RTL→게이트→배치→배선 — 성능·전력·면적
  2. 2ASIC Flow와 PPA은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

ASIC

RTL→게이트→배치→배선 — 성능·전력·면적

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩