2023년 12월 15일 금요일

ETRI 0.5u CMOS 공정용 표준 셀 기반 디지털 반도체 설계 디자인-킷 v.1a (2023-12-13)

ETRI 0.5u CMOS 공정용 표준 셀 기반 디지털 반도체 설계 디자인-킷 v.1a (2023-12-13)

목차:

I. 개요
II. 오픈-소스 반도체 설계도구
III. QFlow에 ETRI 0.5u CMOS 공정 이식
IV. 디자인 킷 표준 예제
V. 디자인 킷 다운로드
VI. 디자인 킷 설치
VII. 표준 예제 ALU8 실행
VIII. 결론

-------------------------------------------------------

I. 개요

경희대학교 반도체 전공 트랙 사업단은 교육용 디지털 반도체 설계 교육용으로 일련의 툴 체인과 설계 플로우(Tool-Chain & Flow)을 구축 하였다. 대상 공정기술은 ETRI 0.5um CMOS로 2중 폴리실리콘 3중 메탈 공정이다[링크].

ETRI 0.5um 공정은 반도체 설계 교육의 일환으로 다 프로젝트 웨이퍼 MPW(Multi-Project Wafer)를 공모하면서 풀-커스텀(Full-Custom) 방식의 설계를 수용한다[링크]. 이는 표준 셀(Std-Cell)을 포함한 일련의 디자인 킷을 제공하지 않는다는 의미다. 이에 본 디자인-킷(Design Kit)은 하드웨어 기술 언어 HDL(Hardware Description Language[link])를 사용한 디지털 반도체 회로 설계에 적용하기 위해 표준-셀 라이브러리(Std-Cell Library[link])를 제작 하였다.

본 디자인 킷(이하 DK)은 표준 셀을 비롯하여 합성(Synthesis), 배치배선(Place & Route) 그리고 레이아웃(Layout)생성까지 포함한 일련의 설계과정에서 소요되는 각종 툴(설계 자동화 소프트웨어)을 포함한다. 대상이 된 ETRI 0.5um 공정의 특성(제약 사항 포함)과 오픈-소스 툴과 상이한 부분을 맞추기 위한 일련의 쉘 스크립트(shell script)와 파이썬 스크립트(Python script)를 개발하였다.

  1. VIA1 & 2 Stack 검사
  2. Magic 레이아웃에서 SPICE 네트리스트 추출
  3. LVS 및 LVL 검사
  4. Magic 레이아웃에서 표준-셀 라이브리 목록 LEF 및 GDS-II 추출
  5. ETRI 공정 룰 적용 탑-디자인(코어+패드) 레이아웃 GDS-II 추출

본 DK에서 차용한 도구들은 모두 무료로 사용할 수 있는 오픈-소스(open-source)다[link]. 또한, 배포 파일에는 2종의 8비트 CPU, 6502와 Z80 그리고 32비트 RISC-V를 포함해 10여가지 표준 예제를 포함한다. 예제를 통해 HDL의 합성과 자동 배치와 배선 그리고 최종 레이아웃 생성까지 전과정을 살펴볼 수 있다. 각 단계에서 발생하는 오류 기록 파일를 읽고 분석하여 이에 대처하는 방법을 학습 할 수 있을 것이다. 특히 높은 수준의 HDL에서 낮은 수준의 회로 레이아웃까지 이르는 추상화 단계를 낮추는 과정에서 반드시 수행 해야할 검증, 예를 들어 LVS(Layout-Vs-Schematic), SPICE 회로 시뮬레이션 등의 중요성을 알게 될 것이다. 자동 배선이 완료 되었더라도 LVS 오류가 발생 할 수 있다는 점을 유념해야 한다.

모쪼록 본 DK를 통해 "RTL 에서 레이아웃"까지 이르는 표준 셀 기반 반도체 설계의 전 과정에 대한 이해를 높이는 교육 자료로 쓰이길 희망한다.

II. 오픈-소스 반도체 설계도구

오픈-소스 운동이 활발해 지면서 공개된 소프트웨어(하드웨어도 포함하여)는 집단지성의 힘으로 완성도를 높여왔다. 배포 방식에 있어서 미리 컴파일 된 바이너리도 있지만 소스 코드와 함께 배포되기도 한다. 이 경우 사용자가 직접 컴파일 해야 하는데 종종 컴퓨팅 환경이 맞지 않아 곤란을 겪기도 한다. 이를 해결하기 위해 상당 수준의 프로그래밍 능력을 요한다. 또한 각 소프트웨어는 저마다 개발자가 다르고 다음 단계의 툴과 통합을 상세히 고려하지 않는다. 뿐만 아니라 혹시 존재할지도 모를 소프트웨어의 결함으로 인한 피해 또한 사용자의 몫 임을 명심해야 한다. 더구나 컴파일을 위해 사용자가 수정한 소스 코드의 결함은 두말할 나위도 없다.

또한, 자동화된 도구를 사용하여 추상화 수준을 달리 하면서 회로를 기술하는 방식도 달라진다. 이러한 설계자동화 과정의 난점을 극복하기 위해 일부 업계표준(industry de-facto)의 파일형식이 제안되어 폭넓게 받아들여지고 있는 점은 매우 다행이다. 일예로 LEF(Library Exchage Format)와 DEF(Design Exchange Format)들이 그것이다[link]. 하지만 이들은 언어가 아닌 확장성을 고려한 표현 양식인 탓에 형식규정이 매우 느슨 하다. 이는 툴 마다 기술된 내용을 선택적으로 사용한다는 의미이기도 하다. 일예로 LEF의 VIA 룰은 레이아웃 툴 Magic의 룰에서 무시된다거나 VIA 간격 룰은 자동배선 툴 QRouter에서는 사용되지 않는다.

이러한 툴 간의 부조화를 극복하여 일관성을 세울 방안으로 스크립트 기반의 툴 플로우 도구들이 개발되어 있는데 OpenROAD[link], QFlow[link] 등이 있다. 본 DK는 QFlow를 차용하였다. QFlow를 포함해 이에 사용되는 도구들은 Open circuit Design[link]를 통해 배포되고 있다. 학술용 반도체 제작을 지원하는 MOSIS[link]와 함께 교육 뿐만 아니라 스타트-업의 프로토 타입 칩을 저렵하게 제작해 주는 eFabless[link]의 공식 설계 툴 중 하나로 지정되었다.

본 DK 에서 차용한 반도체 설계 자동화 오픈-소스 도구들의 목록과 배포판은 아래와 같다.

  1. QFlow[링크]: 반도체 설계 툴 플로우 통합
  2. OSS CAD Suite (Yosys/iVerilog & etc.)[링크]: 베릴로그 RTL 합성기 및 검증도구 모음
  3. GrayWolf[링크]: 표준 셀 자동 배치 도구
  4. QRouter[링크]: 표준 셀 자동 배선 도구
  5. Magic[링크]: VLSI 레이아웃 그리기 및 파일 변환
  6. irsim[링크]: 스위치 수준 시뮬레이터
  7. Netgen[링크]: LVS 검증도구
  8. XSchem[링크]: 회로 입력 도구
  9. ngSpice[링크]: SPICE 회로 시뮬레이터
  10. gtkwave[링크]: 디지털 회로 파형 VCD 보기
  11. KLayout[링크]: VLSI 레이아웃 툴

오픈 소스 반도체 설계 툴들은 모두 리눅스 운영체제에서 실행된다. 이들 툴의 개발 역시 오픈-소스 운영체제 상에서 컴파일러 GCC, 그리고 티클/틱(Tcl/Tk), 파이썬(Python)을 활용하여 이뤄지고 있다. 툴의 컴파일과 사용을 위해 필요한 패키지들도 상당히 많으므로 해당목록을 참고하여 추가 설치해 주어야 한다. QFlow와 관련 툴의 설치 방법은 아래 링크를 참조한다.

    "반도체 설계 오픈 소스 도구 QFlow" [링크]

QFlow 의 그래픽 사용자 인터페이스(GUI)의 사용법은 매우 직관적이어서 몇가지 제공되는 예제를 수행하면 RTL 합성부터 레이아웃 까지 전과정을 쉽게 수행해 볼 수 있다. "Qflow (GUI) Tutorial" [링크]

각 단계를 거치며 동원되는 각각의 툴의 호출은 파이썬 및 쉘 스크립트를 통해 이뤄 진다. 추상화 변환단계의 과정에서 이뤄지는 파일 형식 변환과 툴 마다 각종 실행 옵션 주기 그리고 설계별 툴 실행용 스크립트 작성은 매우 복잡하다. QFlow는 반도체 설계 플로우의 통합 도구로서 이 절차를 파이썬, 티클/틱 그리고 쉘 스크립트를 활용하여 대신해 준다. 미리 준비된 예제는 큰 어려움 어려움 없이 실시해 볼 수 있다. 하지만 새로운 설계를 적용하며 맞닥뜨릴 각종 오류는 피할 수 없다. 이에 대하여 대처하려면 명령줄 기반의 툴 사용법을 익히고 각 단계에서 도구들이 내놓은 오류 메시지를 읽을 수 있어야 한다. QFlow의 명령줄(command-line) 실행은 다소 수고가 따르지만 매우 유용하다. "Opencircuit QFlow: Digital Synthesis Flow Tutorial (No GUI)" [링크]

QFlow의 명령줄 실행 실습의 예는 아래의 링크를 참조한다. QFlow 실행중 단계별 제반 툴의 역활 및 입출력 파일의 형식 변환용 스크립트, 그리고 로그 파일 읽기를 설명 한다.

    "QFlow Command-Line 실행 실습" [링크]

[참고] OpenROAD: Toward a Self-Driving, Open-Source Digital Layout Implementation Tool Chain [link]

If successful,OpenROAD will help realize the IDEA goal of "democratization of hardware design", by reducing cost, expertise, schedule and risk barriers that confront system designers today.

"오픈 소스 기획이 성공적으로 이뤄진다면 반도체 설계의 민주화(democratization of hardware design) 실현에 일조하는 것이다"

III. QFlow에 ETRI 0.5u CMOS 공정 이식

기존에 구축되어있는 QFlow에 ETRI의 0.5um CMOS 공정을 이식하려면 설계 툴의 수정과 공정 특성에 맞추기 위한 스크립트의 추가 개발이 따른다. 배포된 QFlow의 소스에 필요한 공정관련 파일을 추가하고 재 컴파일 하여 QFlow에 ETRI 0.5um CMOS 공정을 이식 할 수 있다. 경희대학교 반도체 전공 트랙 사업단에서 배포하는 ETRI 0.5u CMOS 공정이 이식된 QFlow 소스 파일을 내려 받을 수 있다[].

이식을 위해 수정한 파일은 다음과 같다.

    1. etri05_stdcells.gds2 / etri05_stdcells.lef

표준 셀 라이브러리를 묶은 GDS-II 파일이다. 오클라호마 대학 VLSI 연구 그룹[링크]을 통해 공개된 AMI 0.6um 공정의 표준셀 OSU050을 참조하여 ETRI 0.5um 공정의 디자인 룰에 맞게 수정했다. 최신 OSU의 SCMOS MOSIS AMI 표준 셀 라이브러리 버젼은 2.7이다[링크][osu_soc_v2.7.tar.gz]

ETRI 0.5um 공정의 디자인 룰의 비아와 컨택의 크기가 가로세로 2um 에 달한다. 또한 VIA의 스택이 절대 금지되어 있으며 배선에 사용할 수 있는 메탈 층의 수도 제한된다. 이런 제한 사항을 감안하여 표준셀은 수직 수평 배선 채널의 간격을 3um로 설정하였고 수평 배선 공간을 12트랙으로 하였다. 비아 스택이 엄격히 금지 되므로 표준셀의 핀(포트)는 메탈2로 할당하여 자동 배선 도구로 하여금 비아 스택을 만들지 못하도록 하였다. 표준-셀의 한 예로 셋과 리셋을 갖는 D-플립플롭(TTL 시리즈 7474와 동일)의 예를 보면 아래와 같다.

  • DFFSR 레이아웃 [link]
  • DFFSR 의 LEF에서 옵스트럭션 [link]
  • 배선이 이뤄 졌을 때 배선에 사용된 메탈 2와 3 [link]
  • 배선 후 옵스트럭션  [link]

핀(포트)를 메탈 1에 할당한 표준 셀 DFFSR의 비아 스택

  • DFFSR 레이아웃 [link]
  • 자동 배선 후 표준셀 핀(포트)에 비아 스택 [link] [link]
[주] 자동 배선도구의 옵션으로 금지하도록 지시하더라도 비아 스택을 완전히 막지는 못한다. 자동 배선을 실패하거나 LVS 에서 오류를 내기도 한다. 이는 배선용 메탈층의 부족도 한 몫 한다.

    2. SCN3ME_SUBM.30.ETRI.tech

MOSIS의 scmos 디자인 룰과 ETRI의 룰은 트랜지스터 룰에 있어서 호환성을 가지고 있으나 비아(via)와 컨택(contact)의 크기가 크게 확장되어 있고 비아와 컨택의 스택(via stack)이 금지 되어있다. 뿐만 아니라 레이어 번호는 완전히 다르다. 따라서 레이아웃 툴 Magic 의 테크 파일을 전면 수정했다.

IV. 디자인 킷 표준 예제

무료 사용인 만큼 오픈-소스 툴의 신뢰성을 담보 받기는 커녕 기술지원을 받기도 어렵다. 따라서 사용시 주의를 요하며 완성도는 사용자의 경험과 판단에 달렸다. 이에 사용자 컴파일 툴의 시험과 디자인 킷의 연습을 위해 표준 테스트 셋을 제공한다. 표준 예제에는 간단한 ALU 를 포함해 8비트 마이크로 프로세서와 32비트 RISC-V 를 포함 하였다. 이들 예제들 역시 오픈-소스로 공개되어 있다.

  • 6502 CPU [링크] / 6502 RTL+SystemC Interactive Co-Simulation [링크] / 튜토리얼 [링크]
  • Z-80 CPU [링크] / Z80 RTL+SystemC Interactive Co-Simulation [링크]
  • PicoRV32 [링크]

V. 디자인 킷 다운로드

본 DK에 사용된 오픈 소스 툴과 해당 버젼의 내려받기 링크는 아래와 같다.

  1. QFlow-1.4 [내려받기]
  2. OSS CAD Suite 20231010 (Yosys/iVerilog & etc.) [내려받기]
  3. GrayWolf-2.1 [내려받기]
  4. QRouter-1.4.86 [내려받기]
  5. Magic-8.3.424 [내려받기]
  6. irsim-9.7.117 [내려받기]
  7. Netgen-1.5.255 [내려받기]
  8. XSchem-3.4.5 [내려받기] Gaw [내려받기]
  9. ngSpice-41 [내려받기]
  10. KLayout [내려받기]
  11. DK Install Script [내려받기]

디자인 킷의 압축 파일을 아래 링크에서 내려받을 수 있다.

ETRI 0.5um CMOS Process DK v.1a [내려받기]

오픈 소스 툴의 컴파일 및 설치와 사용을 위해 필요한 리눅스 패키지 목록은 다음과 같다.

  1. git / unzip
  2. build-essential / cmake / clang / bison / flex / gawk
  3. xterm / libx11-dev / x11-xserver-utils / libxaw7-dev / libcairo2-dev
  4. libreadline-dev / m4
  5. tcl-dev / tk-dev / tcsh / csh
  6. libffi-dev / graphviz / xdot / pkg-config
  7. python3 / python3.9-tk
  8. libgsl-dev zlib1g-dev libxt-dev
  9. mesa-common-dev / libglu1-mesa-dev libncurses-dev
  10. libboost-all-dev / libboost-dev / libboost-filesystem-dev
  11. libboost-system-dev / libboost-python-dev / libeigen3-dev
  12. qtbase5-dev / qtdeclarative5-dev
  13. swig / libtool / libjpeg-dev / gperf
  14. gtkwave / klayout

필요 패키지 설치와 오픈 소스 툴 컴파일을 실행 할 수 있는 일괄 설치 스크립트를 제공한다.

VI. 디자인 킷 설치

본 디자인 킷은 리눅스 운영체제에서 실행된다. 리눅스 운영체제는 마이크로 소프트 윈도우즈 10 또는 11의 리눅스 하위 시스템 WSL(Windows Sub-system Linux)를 통해 운용될 수 있다. WSL의 설치는 다음과 같다.

윈도우즈 PC에 리눅스 설치

오픈 소스들을 컴파일하고 실행 할 환경이 대부분 리눅스다. 윈도우즈 PC에서 리눅스를 설치하는 방법으로 WSL(Windows Subsystem for Linux [link])을 쓰기로 한다.

    1. 커맨드 창을 열어 아래와 같이 실행한다.

    PS> wsl --set-default-version 2
    PS> wsl --update

    2. 우분투 리눅스 설치

마이크로소프트 스토어에서 Ubuntu 를 검색해 20.04.6 LTS 를 내려받아 설치한다.

오픈-소스 툴 설치

베릴로그 RTL 합성기를 포함하여 자동 배치 및 배선, 레이아웃 편집및 파일변환 그리고 GDS 생성용 툴의 설치 방법은 아래와 같다.

    1. 리눅스 로그인 후 내려받은 디자인 킷 압축 풀기

    ~$ tar xvf ETRI050_DesignKit_v.1a.tar.gz
    ~$ cd ETRI050_DesignKit

    2. 디자인 킷의 툴 폴더 생성

    ~/ETRI050_DesignKit$ mkdir Tools
   
~/ETRI050_DesignKit$ cd Tools

    3. 내려받은 오픈-소스 툴의 소스 압축 파일 및 설치 스크립트 파일 확인

    ~/ETRI050_DesignKit/Tools$ ls
    total
    -rwxr-xr-x 1 goodkook goodkook      3532 Nov 29 08:08 build_tools.sh
    -rw-r--r-- 1 goodkook goodkook   2962044 Nov 29 00:24 graywolf-2.1.tar.gz
    -rw-r--r-- 1 goodkook goodkook   1444263 Nov 29 00:25 irsim-9.7.117.tar.gz
    -rw-r--r-- 1 goodkook goodkook  60762332 Dec  5 09:58 klayout_0.28.13-1_amd64.deb
    -rw-r--r-- 1 goodkook goodkook  14697029 Nov 29 00:25 magic-8.3.424.tar.gz
    -rw-r--r-- 1 goodkook goodkook   4021236 Nov 29 00:26 netgen-1.5.255.tar.gz
    -rw-r--r-- 1 goodkook goodkook   9987828 Nov 29 08:06 ngspice-41.tar.gz
    -rw-r--r-- 1 goodkook goodkook 532214879 Nov 28 23:01 oss-cad-suite-linux-x64-20231010.tgz
    -rw-r--r-- 1 goodkook goodkook   2463961 Nov 29 00:26 qflow-1.4.100_etri050.tar.gz
    -rw-r--r-- 1 goodkook goodkook   1183562 Nov 29 00:27 qrouter-1.4.86.tar.gz
    -rw-r--r-- 1 goodkook goodkook  62919612 Nov 29 00:27 xschem-3.4.5.tar.gz
    -rw-r--r-- 1 goodkook goodkook   6542554 Nov 29 00:28 xschem-gaw.tar.gz

    4. 오픈 소스 툴 설치 스크립트 실행

    ~/ETRI050_DesignKit/Tools$ ./build_tools.sh

    5. 디자인 킷을 qflow 툴의 테크 폴더로 연결(symbolic link)

    $ cd ~/ETRI050_DesignKit/devel
    $ ln -s digital_ETRI digital_ETRI050_m2d

    $ cd /usr/local/share/qflow/tech
    $ sudo mv etri050 etri050.bak

    $ sudo mkdir etri050
    $ cd etri050

    $ sudo ln -s ~/ETRI050_DesignKit/devel/tech/SCN3ME_SUBM.30.ETRI.tech SCN3ME_SUBM.30.ETRI.tech

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri050.magicrc etri050.magicrc

    $ sudo ln -s ~/ETRI050_DesignKit/devel/tech/etri050.par etri050.par

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri050.prm etri050.prm

    $ sudo ln -s ~/ETRI050_DesignKit/devel/tech/etri050.sh etri050.sh

    $ sudo ln -s ~/ETRI050_DesignKit/devel/tech/etri050_setup.tcl etri050_setup.tcl

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri050_stdcells.lef etri050_stdcells.lef

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri050_stdcells.sp etri050_stdcells.sp

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri05_stdcells.gds2 etri05_stdcells.gds2

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri05_stdcells.lib etri05_stdcells.lib

    $ sudo ln -s ~/ETRI050_DesignKit/devel/digital_ETRI/etri05_stdcells.v etri05_stdcells.v

VII. 표준 예제 ALU8 실행[Link]

디자인 킷에 제공된 예제 ALU8를 통해 오픈-소스 툴이 정상적으로 설치 되었는지 확인 해보자.

    $ cd ~/ETRI050_DesignKit/devel/Ref_Design/ALU8

    1. Yosys: 베릴로그 RTL 합성기

    $ qflow synthesize ALU_wrapper

    2. GrayWolf: 표준 셀 자동배치

    $ qflow place ALU_wrapper

    3. QRouter: 표준 셀 자동 배선

    $ qflow route ALU_wrapper

    4. Magic: 표준 셀 병합

    $ qflow migrate ALU_wrapper

    5. Netgen: LVS 검증

    $ qflow lvs ALU_wrapper

    6. Magic: 레이아웃 DRC

    $ cd layout
    $ ln -s ../../../digital_ETRI digital_ETRI
    $ magic -d XR ALU_wrapper

위의 과정을 모두 수행 되었다면 디자인 킷과 필요한 설계 도구들이 정상적으로 설치된 것이다.

[참고] 6502 CPU 예제 [링크]

VIII. 결론

ETRI 0.5u CMOS 공정용 표준 셀 기반 디지털 반도체 설계 디자인-킷을 개발 하여 이를 공개 한다. 국가 나노인프라 협의체 KION ( https://kion.or.kr/ )은 연중 MPW를 진행하며 ETRI의 공정을 활용하여 학생들이 설계한 칩을 무료로 제작해 주고 있다. 본 디자인 킷으로 우리나라 산업구조의 취약점으로 지적되고 있는 반도체 소부장(소재, 부품, 장비)분야에 역량을 발휘할 고급 반도체 전공 인력 양성에 기여할 수 있길 바란다.

2024년 1차 "내칩" 서비스 공고


댓글 없음:

댓글 쓰기