EDA/Auto Layout

#1 Inverter Auto Layout

돌머리 돌돌 2026. 2. 26. 14:55

지난번에 인버터 Layout을 GUI를 이용하여 직접 그렸는데,
TCL 코드를 이용하면 실행하여 바로 인버터를 완성할 수 있습니다.

위 사진은 Opensource Circuit Design 카테고리에서 생성한 인버터를 CLI 코드로 변환한 것이다.

 

그런데 인버터의 사이즈(X1, X2...)가 커진다는 것은
결국 레이아웃 상에서 가로 방향으로 핑거(Finger)가 계속 추가되는 것 뿐이고.
이를 이용해 원하는 사이즈 값만 입력해도 그에 딱 맞는 멀티 핑거 인버터 레이아웃을 즉시 그려내는
자동화 매크로를 비교적 쉽게 구현할 수 있겠다는 생각이 들었습니다.

 

순서는 다음과 같습니다.
json 파일에 기본 인버터 X1 사이즈 정보를 넣습니다.
python에서 불러와 사이즈를 입력받습니다.
해당 사이즈에 맞게 json 파일을 기반으로 인버터를 스케일링합니다.

 

먼저 json 파일을 만들어줬습니다.

이런식으로 CLI에 써놓은 좌표값을 넣어두면 됩니다.

 

이를 이제 Python에서 불러와서 스케일링해봅시다.
사이즈가 증가할수록 Source / Drain을 반복하여 생성할 것입니다.
Source가 추가될 때는 Power와 MOS간의 Metal이 연결되어야 하고,
Drain이 추가될 때는 MOS간 Metal이 연결되어야 합니다.

사이즈 1당
Nwell, Diffusion 영역, power라인 길이가 10람다 증가하게 했습니다.
Contact이 Pdiffusion 영역에 2개, Ndiffusion 영역에 1개 추가됩니다.
Poly 실리콘도 한줄 추가됩니다.


그렇게 사이즈를 재설정하고, TCL 코드로 만들게 했습니다.

 

이제 실행해봅시다.

 

예를 들어 X15 사이즈의 인버터를 입력하면

다음과 같이 바로 생성되는 것을 확인할 수 있었습니다.
Power Line에 컨택도 박아줘야하는데 이것도 추후 수정해보겠습니다.

 

Sky130nm와 같이 꽤나 큰 공정의 경우, PMOS, NMOS cell 등을 W, L, F를 입력하면 바로 만들어준다고 합니다.
하지만 ETRI 공정같은 경우, 전부 수제작으로 만들어야 하다보니
length와 width를 고정하고 Finger를 늘리는 방법으로 사이즈를 키우는 방식을 사용했습니다.

물론 length도 조절하면 바로 바꿀 수 있을 것 같습니다만, Width는 전체 cell 크기의 높이 고정 문제로
좀 고민을 해봐야할 것 같습니다.

'EDA > Auto Layout' 카테고리의 다른 글

#2 NAND, NOR Auto Layout  (0) 2026.03.13