다음으로는 설계한 Inverter의 Layout Design을 설계해보고자 합니다.
파운드리 공정에서 Schematic만 갖고 그대로 칩을 만들어 주면 좋겠지만, 현실은 규정에 맞게 그려야 합니다.
그러면 먼저 디렉토리 생성 후 Magic의 환경 설정도 복사해옵시다.
cd /home/Tutorial_inverter
mkdir 1-2_Inverter_Magic
cd 1-2_Inverter_Magic
cp /home/pdk/ETRI050_DesignKit/tech/etri050.magicrc .magicrc

경로도 새로 수정해봅시다.
vim .magicrc
5번째 줄을 design Kit를 넣어둔 경로로 변경
이제 준비가 다 되었으니 레이아웃을 생성해봅시다.
magic -d XR
-d XR 은 그래픽 창이 X-윈도우 터미널 속성을 따르도록 합니다.

인버터에는 nmos 한 개와 pmos 한 개 씩 총 2개의 Transistor가 존재했고, 이들이 배선으로 핀과 연결된 구조였습니다.
파운드리 공정에 칩을 맡기기 위해서, 앞으로 그릴 인버터 회로와 같이 실제 설계도로 제공해주어야 합니다.
이를 그리는 작업을 Layout Design이라 합니다.

옆의 그림을 보면
칩의 가장 하단에 트렌지스터가 깔리고 겹겹히 Metal 로 선을 연결합니다.
여기서 트렌지스터와 Metal 1이 만나는 부분을 Contact 나머지 Metal끼리 만나는 부분을 Via 라고 합니다.
이들도 그려주어야 합니다.
먼저 명령창을 통해 격자와 대화형 drc를 켜봅시다, snap을 해제하면 자유롭게 움직일 수 있게 해줍니다.
drc on
grid on
snap off
작은 박스를 좌 클릭, 우 클릭으로 잡고 box 명령어를 치면 크기가 나옵니다.
박스 하나당 크기가 0.15um라는 것을 알 수 있습니다.
그러면 먼저 well부터 깔아줍시다.
색깔을 넣는 방법은 좌 클릭, 우 클릭으로 박스를 만들고
옆에 있는 원하는 재료를 휠로 누르시면 됩니다.
바탕을 누르면 사라집니다.
기본적으로 실리콘은 p well이 default로 되어있는 경우가 많습니다.
일단 n well을 drc 규정에 맞추어 크게 깔아주었습니다.
drc error 가 뜬다면 명령창에 drc why 라고 치면 나옵니다.
이제 Pfet의 Diffusion 영역을 그릴건데 p diffusion은 N well보다 6 람다 안쪽으로 들어와야 합니다.
1 람다는 박스를 쳐 보면 알다 싶이 0.3um이므로 2칸입니다. 총 12칸 안쪽으로 들어와야 합니다.
Width가 6u length가 0.6u였습니다. 전류가 가로로 흐르니 폭이 6u = 40칸 입니다.
세로를 40칸 가로는 일단 충분히 크게 잡겠습니다.
다음으로는 Mosfet의 Gate 영역을 그려봅시다. 해당 영역은 polysilicon으로 그리면 됩니다.
채널 길이(Length)는 0.6u 였습니다. 가로가 4칸이 되도록 그려줍시다.

다음으로는 VDD를 만들고 Pmos의 Source 부분에 연결시켜 주겠습니다.
VDD가 흐르는 Power line을 Metal 1로 Pmos 위에 그어줍니다.
트렌지스터와 Metal 1사이에 전하가 흐르게 하기 위해서 Contact을 해주어야 합니다.
pdcontact을 이용하여 Diff 영역 끝 쪽에 만들어주겠습니다.
이제 Transistor 부분과 VDD 부분을 Metal 1로 이어주겠습니다.

하단에도 같은 방식으로 ndiffusion 영역을 먼저 깔아줍니다.
이번에는 length는 동일하고, Width만 절반 크기(20칸) 였습니다.
Inverter는 PMOS와 NMOS가 게이트 전압을 공유합니다.
편하게 polysilicon 로 이어줍니다.
NMOS의 Contact은 ndcontact 을 이용해야 합니다. 이도 똑같이 붙여주겠습니다.
VDD 라인을 만들었던 것 처럼 VSS (Ground) 라인도 흘러야 합니다.
VDD 라인과 비슷하게 VSS라인도 Metal 1로 연결해줍니다.
인버터는 출력 곧 Pmos의 Drain 부분과 Nmos의 Drain 부분이 연결되어 있습니다.
이 부분도 Metal 1로 연결해주겠습니다.


VDD, VSS 두 종류의 Power line에도 Body Tap을 박아줘야 합니다.
VDD에는 nsubstratencontact을, VSS에는 psubstratepcontact을 이용하여 기판과 연결해줍니다.
입력 신호도 Metal로 들어올 수 있도록 polycontact을 파서 poly와 Metal1을 연결해 줍시다.
다음으로는 Label을 붙이는 작업을 해야합니다.
필요한 Label은 총 4개입니다.
VDD, VSS, Vin, Vout
먼저 위쪽 VDD 부분을 선택하고 다음 명령어를 쳐주세요.
label vdd c m1
port make
이는 선택한 메탈 1의 중앙에 vdd라는 라벨을 붙이라는 명령입니다.
그리고 라벨을 port로 바꾸어줍니다.
나머지도 동일하게 라벨을 붙여주세요. Edit -> Text를 통해 핀 번호도 설정해 줄 수 있습니다.

이렇게 인버터를 레이아웃으로 다 설계했습니다.
다음에는 해당 인버터가 실제 Schematic과 같은지 비교하는 시뮬레이션, Netgen을 해보겠습니다.
'EDA > Open Source Circuit Design Tutorial' 카테고리의 다른 글
| #7 Post-Simulation (0) | 2026.02.04 |
|---|---|
| #6 Netgen을 이용한 LVS Test (0) | 2026.02.04 |
| #4 Ngspice를 이용한 Inverter 회로 Simulation (0) | 2026.02.04 |
| #3 Xschem을 이용한 Inverter 설계 (0) | 2026.02.04 |
| #2 오픈 소스 회로 설계 툴 설치 (Magic, Xschem, Ngspice, Netgen) (0) | 2026.02.04 |