IC레이아웃

Abstract view (또는 phantom이라고도 부름) , LEF file 만들기

쥴리정 2024. 8. 24. 22:40

글쓴이는 아날로그 레이아웃 업무를 하고 있지만, 업무를 진행하다 보면 디지털 레이아웃 엔지니어들과 DB를 주고 받아야 하는 일들도 종종 발생한다.

특히 요즘은 아날로그 chip 인 경우에도 디지털 tool을 이용하여 레이아웃 및 검증을 완료하는 추세로 가고 있기 때문에 아날로그 레이아웃 관련 정보를 디지털 엔지니어에게 전달하는 업무도 필수적으로 알아두어야 한다.

단순히 생각하면 아날로그 레이아웃을 완료 후 완성된 gds 파일이나 virtuoso DB를 전달해 주면 될 것 같지만 그렇지 않은데, 일단 아날로그 레이아웃과 디지털 레이아웃은 EDA tool 자체가 다르기도 하고, 그 tool을 이용하여 레이아웃 하는 방식 또한 전혀 다르다.

디지털 레이아웃을 다른 말로 흔히 auto P&R이라고도 부르는데, P&R은 Placement & Routing 의 약자이다. 디지털 레이아웃 tool (cadence 사의 innovus, synopsys 사의 ICC, ICC2가 대표적인 P&R tool이다)은 지정된 조건에 맞게 이미 레이아웃이 완료되어 있는 아날로그 블럭이나 디지털 로직 cell들을 가져와서 자동으로 배치와 라우팅을 진행하기 때문에 이렇게 부르고 있다. 

때문에 디지털 레이아웃 시에는 굳이 복잡한 FEOL 정보가 없어도 Placement와 Routing을 할 수 있는 블럭 사이즈,모양, pin 이름과 위치, pin이 어떤 메탈에 있는지, 메탈 모양은 어떤지 정도의 기본적인 정보만 있으면  작업이 가능하다. 물론 FEOL 정보가  모두 포함된 DB를 가지고 작업할 수도 있겠지만 이 때는 DB 크기가 지나치게 커지게 되어 P&R 작업 속도가 필요 이상으로 느려져서 큰 문제가 되기 때문에 P&R 작업 시에는 항상 P&R을 수행하는 데 필요한 DB를 별도로 만들어서 제공하게 된다.

 

이렇게 P&R 작업에 꼭 필요한 정보인 pin name, pin 위치, pin의 metal 정보, 블럭 사이즈 등만 표시해 주는 DB를 LEF 파일이라고 부르며, 이 LEF 파일을 만들기 위한 layout view를 abstract view라고 부른다. 쉽게 표현하자면 abstract 는 P&R에 필요한 정보를 표시해 준 layout이고 이 abstract DB를 ASCII 파일로 변환해 놓은 것이 LEF file이다.

DB를 만드는 순서로 본다면, layout  -> abstract -> LEF 순서이다.

 

그런데 간혹 팬텀(phantom) 파일, 팬텀 DB라는 용어를 사용하는 엔지니어들도 있는데, 팬텀 DB는 abstract view와 동일한 뜻이다. 예전에는 phantom DB 라고도 불렀기 때문에 아직 이런 용어를 사용하기도 하는데, 글로벌하게 업무를 진행 할 때에는 abstract view 라고 해야 모든 엔지니어들이 알아들으니 phantom이라는 용어가 있구나 하는 정도로만 알아두도록 하자.

 

말로 장황하게 설명했지만 백문이 불여일견이라고 아래 그림을 보면 아주 쉽게 이해 할 수 있다.

 

 

layout view

 

abstract view
LEF file

 

P&R 작업이 모두 완료된 이후에 DRC, LVS 검증을 진행할 때에는 물론 abstract view를 FEOL를 포함한 모든 레이어 정보를 가지고 있는 real layout DB로 바꾼 후 검증 및 tape-out을 해야 한다는 점은 잊으면 안된다.

(일부 전설적인 chip 개발 실패 사례를 보면, P&R 후 abstract view의 내용만 포함한 상태로 tape-out을 진행했다는 황당한 사건들도 전해내려 온다. 마냥 웃을 수 만은 없는 사례라는 뜻.)

 

어찌되었든, 최종적으로 아날로그 레이아웃 엔지니어는 디지털 엔지니어에게 LEF 파일과 LEF 파일의 pin 정보와 동일한 내용을 가진 gds 파일을 전달해 주면 된다.

만약 LEF 파일을 먼저 전달해 준 후에 부득이한 이유로 레이아웃에서 pin의 메탈 위치가 조금이라도 변경되었다면 반드시 변경된 내용이 정확하게 반영된 LEF 파일을 업데이트 해 주어야 한다. 그래야 P&R 완료 후에 검증에서 문제가 발생하지 않는다. 그리고 레이아웃 할 때에도 LEF 파일을 추출했던 abstract view는 별도로 저장해 놓고 레이아웃의 pin 위치가 바뀌지 않도록 확인해 주면서 작업하는 습관을 들이는 것이 좋다. 

나도 모르게 나중에 pin의 메탈 위치가 변경되었다면 나중에 디지털 엔지니어에게 눈물 쏙 빠지도록 뒤지게 혼나는 일이 생길 수도 있다.

 

그럼 이제 최종적으로 전달해야 하는 LEF 파일에 대하여 좀 더 알아보자.

물론 구글링을 하면 LEF 파일에 대한 자세한 정보가 넘쳐나니 심화 학습을 하고 싶은 이들은 검색을 권장한다.


LEF file

 

1) LEF = Library Exchange File

2) LEF는 읽을 수 있는 ASCII text file 형식

3) 크게 두 파트로 구성되어 있음

   - Technology LEF 파트

   - Cell LEF 파트

4) Technology LEF 내용 (괄호 안은 예)

   - LEF version (5.7 | 5.8)

   - Units (DATABASE | TIME | RESISTANCE | CAPACITANCE)

   - Manufacturing grid (0.005 | 0.001)

   - Design rules and other details for each BOEL layers

   - Layer name (poly | contact| metal | via 등)

   - Type (Masterslice | Routing | cut 등)

   - Direction (Horiontal | Vertical)

   - Pitch

   - Width

   - Spacing

   - Resistance (per sq. unit)

5) Cell LEF 내용  (괄호 안은 예)

   - Cell name

   - Class (CORE | PAD)

   - Origin

   - Size ( width by height of cell, PR boundry, -10 by 35)

   - Symmetry (X Y | X | Y)

   - Site (CoreSite PAD)

   - Details of each pins

       - Pin name

       - Direction (INPT | OUTPUT | INOUT)

       - Use (SIGNAL | CLOCK | POWER | GROUND)

       - Shape (Abutment in case of power and ground pin)

       - Layer (metal1 | metal2)

       - rectangle coordinates (RECT llx lly urx ury)


LEF 파일 만드는 방법

 

LEF 파일을 만드는 방법은 여러가지가 있는데, 레이아웃이 완성된 상태라면 cadence의 abstract tool을 사용하여 추출할 수 있다.

이 때 필요한 DB는 pin 정보가 포함된 verilog 파일과 gds 파일(또는 virtuoso layout DB) 두가지만 있으면 된다.

Abstract를 사용하여 LEF 파일을 추출 할 때는 verilog 파일의 pin 정보를 참조하여 추출하기 때문에 verilog 파일에서 정의된 pin 정보와 layout에 있는 pin 정보가 일치하지 않을 때는 log file을 통하여 바로 확인이 가능하다는 장점이 있지만 Abstract tool을 띄울 때 virtuoso-XL 라이센스가 필요하기 때문에 virtuoso-XL 라이센스가 없다면 tool을 사용할 수 없다는 단점이 있다.

자세한 사용법은 cadence site에 접속하거나 tool이 설치되어 있는 환경의 document에서 확인이 가능하다.

(Cadence 사의 저작권 관련하여 자세한 tool 사용법은 소개하지 않음)

 

그럼 abstract tool을 사용 할 수 없을 때는?

Layout tool에서 abstract view를 만든 후 바로 LEF 추출을 하면 간단하다.

필자의 경우, pin이 몇 개 되지 않고 pin 위치가 거의 바뀌지 않는 레이아웃은 이 방법을 사용하고,

pin 이 수백 개 이상이거나 pin 위치를 심하게 바꾸면서 디지털 엔지니어와 DB를 빈번하게 주고받아야 할 때에는 abstract tool을 이용하는 편이다. 이렇게 반드시 abstract를 이용하지 않아도 쉽게 LEF 파일을 만들 수 있으니 편한 방법을 이용하면 된다.


abstract view (=phantom) 만드는 방법

 

아래와 같은 모양의 layout에 대한 abstract 를 만들어 보자.

모든 신호는 metal1, metal3 pin으로만 구성되어 있다.

 

먼저, pin에 해당되는 레이어를 제외하고 다른 레이어는 모두 지워준다. 이 때

1) 블럭 사이즈와 동일하게 prboundry 레이어를 꼭! 그려주어야 하고,

2) 모든 신호는 virtuoso가 인식하는 "pin"으로 drawing되어 있어야 한다.

     (일반 메탈 polygon에 label만 attach 해 놓으면 LVS는 되지만 LEF로는 뽑히지 않으니 주의할 것)

      아래와 같은 모양으로 준비해 준다. 이 때 pin의 메탈은 via가 2, 3개 정도 연결될 수 있는 길이로 하면 된다.

 

pin 을 확대 해 보면 이런 모양으로 준비하면 된다. 모든 pin에 대해 이렇게 준비가 되었다면 거의 다 되었다.

물론 pin 위치는 layout과 같아야 한다.

남은 일은 metal blockage를 치는 일이다.

위와 같이 pin 메탈만 준비해서 LEF를 뽑게 되면 메탈이 없는 영역은 P&R tool이 routing을 할 수 있는 공간으로 인식하기 때문에 블럭 위로 routing이 마구 진행 될 수 있다. 이를 막기 위해 pin 외의 나머지 부분은 blockage 처리하여 P&R 시 routing이 침범하지 않게 예방해 준다.

아래는 M1 blockage 를 추가해 준 예.

이 때 가능하면 pin 메탈과 blockage 사이의 space는 wide metal space로 적용하는 것을 권한다.

M1 blockage 추가

 

위의 예에서는 pin이 M1, M3 두 레이어로 구성되어 있기 때문에 pin에 해당되는 모든 레이어에 똑같은 작업을 해 준다.

M3 blockage 적용 예를 보자.

M3 bloackage 추가

블럭의 탑 메탈이 M3라고 했을 때, pin이 없는 M2 레이어도 전체 블럭에 아래와 같이 blockage를 쳐 준다.

M2 blockage
PR boundry

자, 이렇게 하면 이제 abstract view 준비가 끝났다.

전체 레이어를 띄워 보았다.

아래와 같이 보이는 이 상태의 view를 phantom이라고도 부른다. 

누가 phantom DB 주세요 하고 요구한다면 이 상태로 만들어서 gds 파일로 뽑아 주면 된다.

M1,M2,M3, 전체 view

 

LEF를 전달해야 하는 경우라면 이 상태의 abstract view를 준비하여 virtuoso CIW 창에서 LEF를 추출하면 된다.

EXPORT -> LEF 메뉴를 클릭해서 추출해 보자.

LEF file이 뽑혔다면 vi 에디터로 추출된 파일을 열어본다.

아래 예제와 같이 MACRO 이름 안에 블럭 SIZE가 레이아웃과 동일한지, 모든 PIN의 이름과 LAYER 및 좌표가 정확하게 추출되었는지 내용들을 꼼꼼하게 확인하면 된다.

LEF 예

 

Pin 개수가 수백개를 넘어가게 되면 아무래도 script를 짜서 LEF를 체크할 수 있도록 하는 것이 좋다.

그러기 위해서는 평소에 LEF 파일도 많이 열어 보고 파일 구조를 익혀 놓는 것이 도움이 될 것이다.

레이아웃 업무가 없을 때에 짬짬이 익혀 보는 것을 추천한다.

'IC레이아웃' 카테고리의 다른 글

맨땅에 레이아웃 하기 - 사전 체크 항목들  (6) 2025.01.20
GDSII와 OASIS 파일에 대하여  (2) 2024.10.27
Capacitor matching technique  (0) 2024.08.13
Capacitor 종류와 구조  (2) 2024.08.03
저항 matching technique  (3) 2024.07.08