2024년 7월 10일 수요일

"내 칩(My Chip) MPW 서비스": 오픈-소스 도구 활용 반도체 설계 특별과정

"내 칩(My Chip) MPW 서비스":
오픈-소스 도구 활용 반도체 설계 특별과정

[주1] 본 과정은 "내 칩 MPW 서비스"에 지원하기 위해 '경희대학교 반도체 전공 트랙'에서 실시하는 비학점 과정으로 모두에게 개방되어 있습니다.
[주2] 학습은 주로 온-라인 블로그를 통해 아뤄질 것이며 필요에 따라 강좌를 실시할 것입니다. 이어질 강좌는 블로그를 참조하십시요. 
https://fun-teaching-goodkook.blogspot.com/

목차:

I. 학습 목표(Objectives)
II. 선수지식의 수준(Prerequisite)
    II-1. 베릴로그 초급 (Basics of Verilog HDL)
    II-2. C++ 언어 초급(Basics of C++)
    II-3. 리눅스(Understanding Linux)
III. 학습할 내용
    III-1. 설계 방법론(Design Methodology)
    III-2. 검증 방법론(Verification Methodology)
IV. 학습에 사용될 도구
    IV-1. 오픈소스 소프트웨어 도구(GNU Build Essential)
    IV-2. 오픈-소스 반도체 설계 자동화 도구(Silicon EDA Tools)
    IV-3. 하드웨어 활용(FPGA, Arduino)
V. 반도체 설계 외 학습 효과
VI. 학습 방법

[주] 설계 툴 설치 방법과 실습에 필요한 하드웨어들을 설명할 예정입니다. 설치와 구입은 각 개인이 알아서 하되 질문은 언재든 환영 합니다. 예제 별 학습 과정은 계속 이어집니다.

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

I. 학습 목표:

본 과정의 목적은 하드웨어 디지털 반도체 설계로서 아래와 같은 목적을 갖는다.

- 베릴로그 HDL로 기술한 디지털 회로 합성
- 반도체 제조 가능한 레이아웃 생성
- FPGA 활용 RTL 검증
- NSPL 0.5u CMOS  공정 "내 칩 MPW 서비스"를 통한 칩 제작
- 공정을 마친 칩의 테스트

아울러 반도체 설계 교과서에 등장하는 각종 용어들의 이해를 목표로 삼는다.

II. 선수지식의 수준

본 과정을 수행 함에 있어 필요한 사전지식의 수준은 아래와 같다.

II-1. 베릴로그 초급: 논리회로와 조합회로를 이해 (Understanding digital logic circuits)

    [참고자료]
    1. Verilog HDL Quick Reference Guide, https://sutherland-hdl.com/pdfs/verilog_2001_ref_guide.pdf
    2. Quick Reference for Verilog HDL, https://web.stanford.edu/class/ee183/handouts_win2003/VerilogQuickRef.pdf

II-2. C++ 언어 초급: 구조체와 크래스, 템플릿을 이해 (Understanding C++ Class and Template at basic level)

    [참고자료]
    1. C++ Cheat Sheet, https://hackr.io/blog/cpp-cheat-sheet-pdf,
            https://github.com/mortennobel/cpp-cheatsheet (on-line)
    2. C++ Reference(on-line), https://cplusplus.com/reference
    3. SystemC Quick Reference Card, https://www.eis.cs.tu-bs.de/klingauf/systemc/systemc_quickreference.pdf

II-3. 리눅스(Linux)

a. 명령줄 이해(Command-Line user interface)

    [참고자료]
    1. Programing with GNU software, https://www.lrde.epita.fr/~akim/gnuprog2.pdf

b. 리눅스 명령들(Linux commands)

    [참고서]
    1. Linux in a Nutshell, https://repo.zenk-security.com/Linux%20et%20systemes%20d.exploitations/Linux-in-a-Nutshell-6th-Edition.pdf

c. 리눅스 프로그래밍(Linux programming)

    [참고서]
    1. The Linux Programming Interface, https://github.com/rangaeeeee/books-raspberrypimagazines/blob/master/The%20Linux%20Programming%20Interface-Michael%20Kerrisk.pdf

[주] 위에 나열된 [참고자료]와 [참고서]를 모두 구입하거나 읽어보라는 것이 아니다. 앞으로 공부 해가며 필요할 때마다, 또는 틈날 때마다 들춰보자. 향후 이어질 강좌에서 자주 언급될 것이다.

III. 학습 내용

주요 학습 내용은 디지털 반도체의 설계와 검증이다.

III-1. 설계 방법론(Design Methodology):

- 베릴로그를 사용하여 디지털 회로 기술
    (Describing Digital Circuits using Verilog HDL)
- SystemC(C++)를 사용 하여 테스트 벤치 작성
    (System Level Testbench using SystemC/C++)
- 합성으로 네트리스트 생성, 자동 배치 배선, 레이아웃 생성
    (Automated Layout generation: Synthesis, Place & Route, GDS generation)

III-2. 검증 방법론(Verification Methodology):

- 베릴로그 기능 시뮬레이션 (Functional simulation)
- 네트리스트 시뮬레이션 (Netlist simulation)
- 레이아웃 검증 (Layout verification: DRC-Design Rule Check, LVS-Layout-vs-Sch)
- FPGA 사용 RTL 검증 및 프로토 타이핑

 Y-차트를 설계 방법론으로 보자.

IV. 학습에 사용될 사용 도구:

오픈-소스 소프트웨어, 하드웨어 그리고 반도체 설계 자동화 도구 활용 함으로써 적은 비용으로 학습 및 실습이 가능하다. 실습에 소요될 비용 목표는 $150 이하로 삼는다.

IV-1. 오픈소스 소프트웨어 도구

알고리즘 개발 및 시스템 수준 검증 환경 구축 도구로 SystemC(C++) 및 데이터 가시화 도구(Python, Multi-media library)들 사용

- GNU Build-essential (GCC, Make,...)
- 스크립트(Python, Tcl/Tk, Perl,...)
- 그래픽스(X-Libs)
- 멀티미디어(SDL)

IV-2. 오픈-소스 반도체 설계 자동화 도구

- Yosys, RTL synthesizer, https://github.com/YosysHQ
- GrayWolf, Auto-Placer, https://github.com/rubund/graywolf
- QRouter, Auto-Router, https://github.com/RTimothyEdwards/qrouter
- Magic, VLSI layout editor, https://github.com/RTimothyEdwards/magic
- KLayout, layout tool, https://www.klayout.de/
- Netgen, LVS & LVL Netlist compare, https://github.com/RTimothyEdwards/netgen
- QFlow with ETRI050 tech., https://github.com/RTimothyEdwards/qflow
- SystemC, C++ class library for system level simulation & modeling, https://systemc.org/
- Verilator, Verilog to SystemC/C++ converter, https://www.veripool.org/verilator/
- gtkWave, digital waveform viewer, https://gtkwave.sourceforge.net/

IV-3. 하드웨어 활용

- Open-Source: Arduino MEGA (8-bit)/DUE(32-bit)

- NON Open-Source: FPGA(Gowin, Xilinx,...)

V. 반도체 설계 외 학습 효과:

반도체 설계는 전자공학과 컴퓨터 공학의 학부과정에서 배우는 모든 지식이 동원된다. 따라서 본 과정을 수행하며 반도체 설계 외 학습효과를 얻을 수 있다. 반도체 설계 외에도 진출할 분야는 많다.

- 내장형 시스템 프로그래밍(Embedded system ptograming, Arduino)
- C++ 멀티미디어 프로그래밍(C++ programming, SDL-Simple Direct multimedia Layer)
- 스크립트 코딩(Python, Tcl/Tk, Bash-Shell)

VI. 학습 방법:

본 과정은 철저한 예제 중심의 학습이다. 설계 언어의 구문이나 도구의 사용법을 일일이 다루진 않는다. 다양한 예제를 통해 설계 기법과 방법론을 익히게 될 것이다. 깃-허브를 통해 다양한 예제를 제공할 것이므로 학습자는 자신의 흥미와 수준에 따라 예제를 선택한다.

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

1부: "VLSI 레이아웃 설계 기초"

오픈 소스 도구의 기초적인 사용법과 레이아웃 설계와 검증을 정성적으로 다룬다(Quantative approach to VLSI layout design using Open-Source EDA tools). 강의 내용은 아래와 같다.

[1] 리눅스 및 VLSI 레이아웃 도구 설치 [링크]
[2] XSchem, CMOS 인버터 회로도 작성과 시뮬레이션 [링크]
[3] Magic, CMOS 인버터 레이아웃 작성과 회로추출 [링크]
[4] Netgen, 추출한 회로 비교(LVS) [링크]
[5] XSchem 실습: 인버터 회로도 (Schematic Design) [링크]
[6] Magic 실습: 인버터 레이아웃 (Layout Design) [링크]
[7] Netgen 실습: 네트리스트 비교 및 회로 시뮬레이션 [링크]
[8] Std-Cell 제작 실습: DFF-SR [링크]


2부: "Verilog-Verilator-SystemC 방법론 기초"

베릴로그(Verilog)와 오픈-소스 시뮬레이션 도구 Verilator 그리고 시스템 수준 검증 방법론 SystemC의 입문 과정이다. 컴퓨팅 언어를 활용한 디지털 회로의 설계와 검증을 다룬다(Quantative approach to digital circuit design using computing language and Open-Source EDA tools).

강의 내용은 아래와 같다.

[1] 도구 설치 [링크]
[2] 설계 언어 Verilog 와 검증 언어 SystemC/C++[링크]
[3] 하드웨어 기술 언어의 코딩 스타일[링크]
[4] 실습: 쉬프트 레지스터 [링크]
[5] 실습: FIR 필터 [링크]
[6] "내 칩 MPW" 요건에 맞춘 FIR 필터의 PE 설계[링크]

[부록] FIR 필터 PE의 "내 칩MPW" 제출용 GDS 생성[링크]

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

디자인 킷:

2024-Sep-28: "내 칩 MPW" NSPL 0.5um CMOS 공정용 표준-셀 디자인 킷 버젼-E 공개 [링크]

2024-Oct-04: "내 칩 MPW" NSPL 0.5um CMOS 공정용 표준-셀 디자인 킷 버젼-F 공개 [링크]


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


예제 들:

Design Kit, https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK
Counter8, https://github.com/GoodKook/ETRI-0.5u-CMOS-MPW-DK-Example--Counter8
Array Multiplier, https://github.com/GoodKook/ETRI-0.5u-CMOS-MPW-DK-Example--array_multiplier
Booth Multiplier, https://github.com/GoodKook/ETRI-0.5u-CMOS-MPW-DK-Example--booth_multiplier
Signed Multiplier, https://github.com/GoodKook/ETRI-0.5u-CMOS-MPW-DK-Example--signed_multiplier
6502 CPU, https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-DK-Example--6502-CPU
ALU8, https://fun-teaching-goodkook.blogspot.com/2024/01/etri-05um-cmos-dk-alu811.html
FIR8, https://fun-teaching-goodkook.blogspot.com/2024/03/etri-05um-cmos-dk-fir8.html
Pong-Game, https://fun-teaching-goodkook.blogspot.com/2024/07/etri-05um-cmos-dk-pong.html

...









댓글 없음:

댓글 쓰기