레이블이 주간 세미나인 게시물을 표시합니다. 모든 게시물 표시
레이블이 주간 세미나인 게시물을 표시합니다. 모든 게시물 표시

2024년 5월 18일 토요일

"MPW에 지원 하려는데 무슨 무슨 설계 도구 지원 되나요?"라는 질문을 하기전에,

"MPW에 지원 하려는데 설계 도구 지원 되나요?"라는 질문을 하기전에,

반도체 산업이라 하면 떠오르는 정형이 있다. 온갖 장치들과 운송 장비들이 누비는 깔끔한 공장 내부와 그 사이에서 온몸을 하얀 방진복으로 두른 노동자들의 모습은 어쩐지 환상적이다. 자동화된 기계들이 착착 움직이는 모습, 거기에 더해 몽환적인 조명까지 마치 SF 영화의 미래세계를 보는 것 같다. 어디 반도체 산업 뿐이겠는가. 화면에 소스 코드 리스트를 띄워놓고 심각한 표정을 짓는 프로그래머, 칠판에 난해해 보이는 기호들을 나열해 놓고는 서로 풀어보라며 설전을 벌이는 과학자들의 모습을 보며 멋지다는 생각을 해봤을 것이다. 저 멋진 화면에 끼고 싶다는 생각에 '이공계'를 선택하고 이글을 쓰고 있다. 객쩍은 이야기로 시작하는 이유는 그 정형화된 모습은 산업 전반에 극히 일부분이라는 점을 말하고 싶기 때문이다. 해당 분야에 아무것도 모르는 방송 종사자, 영상 제작자들이 현란한 화면이랍시며 골라내 보여준 탓에 세뇌됐다.

반도체 강국이라는 우리나라는 정부 차원에서 '내칩 MPW' 사업을 진행 하고 있다. 무료로 학생들의 설계를 받아 반도체를 제작해 준다고 한다. 사업 공고문을 보면 '아날로그' 기반 CMOS 직접회로를 무료로 제작해 준단다. CMOS 공정에 굳이 '아날로그'만 된다는 법은 없지 않을까 싶어 문의해 봤다. 회로야 아날로그가 되었든 디지털이든 CMOS 회로를 그리고 레이아웃 GDS 제출하면 되겠느냐고 문의 했더니 그렇단다.

'내칩 MPW'는 회로도면을 그려오면 반도체로 제작해 주는 사업이다. 설계자가 알아서 그려오라는 말이다. 도면을 그리려면 도구(소프트웨어)와 기초자료가 있어야 한다. 공정의 물리적 특성을 보여주는 기초자료는 제공되지만 어떤 도구를 쓸지는 설계자의 선택이다. 설계를 위해 선택한 도구에서 요구하는 라이브러리를 준비하는 것도 큰 일꺼리다. 설계자는 자신이 선택한 도구에 맟춰 공정 기초자료를 기반으로 라이브러리를 제작해야 한다. 제조공장에서 다수의 설계도구마다 요구하는 양식의 라이브러리(또는 환경설정)를 제공하기는 곤란하지 않은가. 그것도 무료로 칩을 제작해 준다는데 툴마다 다를 디자인 킷(상당한 비용이 소요됨)까지 마련해 달라고 하는 것은 무리다.

디지털 회로로 MPW에 지원하기 위해 회로를 그리기로 하고 찾아보니 하드웨어 언어 합성기를 비롯하여 다양한 도구가 필요하다는데 가격이 만만치 않다. 다행히 '오픈-소스' 도구들이 있었다. 이들의 사용료 역시 무료지만 '내칩 MPW'의 공정에 맞는 라이브러리는 없다. 어쨌든 설계도구도 무료, 제조도 무료다. 나만의 반도체 칩을 가져보겠다는 꿈을 이루려는데 라이브러리가 없다고 포기할 수는 없기에 만들기로 했다.

알고리즘을 묘사한 기능은 높은 추상화 수준의 컴퓨팅 언어로 기술하고 이를 훨씬 낮은 수준의 회로도면으로 바꿔야 한다. 수천개의 트랜지스터로 구성될 회로도를 한번에 그려낼 자신이 없으므로 자동화 도구를 쓰기로 한다. 십여개 미만의 트랜지스터 회로는 손수 그려 표준 셀 라이브러리로 준비했다. 이를 합성기라는 도구에 연동 시키려니 여간한 일이 아니다. 트랜지스터 수준의 회로도를 컴퓨팅 언어 컴파일러(합성기라고 부르는)에 연동시키려면 '리버티(Liberty)'라는 표준 셀 라이브러리 정의 파일이 있어야 한단다. 이에 더하여 네트 시뮬레이션용 베릴로그(Verilog) 모델이 필요하다. 합성기도 소프트웨어 이므로 버그가 없다고 확신할 수 없으니 추상화 수준의 변경이 발생하면 반드시 검증절차를 거쳐야 하기 때문이다. 그뿐인가, 표준 셀 들의 자동 배치와 배선에 필요한  라이브러리 교환 LEF(Library Exchange Format) 파일(자동 배선 규칙과 표준 셀의 기하학적 정의, footprint), 도면 자동 생성용 후 DRC(Design Rule Check)와 LVS(Layout-vs.-Schematic) 검증을 위한 표준 셀의 회로도(SPICE netlist)들이 필요하다. 이들을 한데 모아 디자인 킷(Design-Kit)이라 한다.

디자인 킷 만들기에 필요한 지식은 대학의 전공수업에서 이미 다 배웠다. 전자회로, 논리회로 설계와 SPICE 시뮬레이션, 반도체 공정, VLSI 설계, 컴퓨팅 언어와 컴파일러, 하드웨어 언어와 합성기 등등. 공짜로 나만의 칩을 만들어 준다는데 이정도 수고는 해야하지 않겠나? 몇달간의 노력끝에 마침내 디자인 킷을 만들어 냈다. 이를 활용하여 레이아웃을 생성하여 공정에 제출하기에 이르럿다. 2023년 첫 내칩 MPW에 참여한 학생의 소감을 들어보자. 2024년 하계 전자공학회 학술대회에서 특별 세션으로 구두발표 예정이다.

"MPW 프로젝트 소감/지하은(경희대학교 전자공학과 3학년)"

수개월 후 마침내 공정을 마친 칩을 제공받았다. 처음 해보는 칩이라 아주 간단한 설계여서 공간이 남아 그림을 넣었다. 칩에 고유의 표시를 넣는 경우가 종종 있다. Chip Art 혹은 Chip Graffiti라고 하는데 실리콘 위의 부활절 달걀인(Easter Egg) 셈이다. 누가봐도 세상에 하나뿐인 내 칩(My Chip)이다.

테스트를 해보니 정말 아쉽게도 칩은 동작하지 않았다. 공정을 해준 ETRI의 도움을 받아 레이아웃을 분석해 보니 디자인 킷에 실수가 있음을 발견했다. 설계물의 코어는 자체 제작한 디자인 킷을 썼으나 입출력 패드는 공정 측에서 PDK의 일부로 라이브러리를 제공 받았는데 GDS 형식이다. 오픈-소스 레이아웃 도구 Magic 에서 이를 들여와야 해서 변환용 테크 파일을 작성했는데 여기에 오류가 있었다.

'내칩 MPW'의 공정은 2중 폴리실리콘에 3층 메탈이다. 대개 Poly2는 아날로그 회로를 꾸밀때 컨덴서와 저항의 용도로 사용한다고 배웠기에 그런줄 았았다. 그런데 디지털 입력 패드 셀 PIC 에 Poly2가 입력 전류 제한용 저항으로 사용되었다는 것을 미쳐 확인하지 못했기에 변환 룰에 Poly2 레이어를 빼먹었던 것이다. 나중에야 제공된 GDS를 KLayout(이역시 오픈소스다) 도구로 들여다보니 분명히 13번 레이어가 사용된 것을 확인했다.

  

실수한 테크 파일을 통해 PIC 를 읽었더니 Poly2 레이어가 빠진채다.

변환 룰을 수정하고 읽었더니 Poly2 저항이 제대로 보인다. 그런데 하필  레이어 이름이 pseudo_rpoly2 라니.

[주] 수정된 디자인 킷, https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK.git

실리콘 검증까지 마친 디자인 킷을 만들겠다는 포부에 다소 '스크래치'가 가긴 했으나 첫술에 배부를 수는 없는 노릇이니 될때까지 시도해 보기로 한다.

반도체 업계에서 활동하는 현직 베테랑 중에 표준 셀을 그리고, 디자인 킷을 제작하고, RTL 설계에서 합성기, 레이아웃 마침내 테스트까지 '내칩'을 제작해본 경험을 가진 설계자는 많지 않다. 반도체 산업의 광범위한 생태계에서 한 부분에 종사할 따름이다. '내칩 MPW' 사업은 '풀 커스텀'으로 제출된 도면을 받아 공짜로 칩을 제작해 준다. 설계도구의 디자인 킷은 각자 알아서 마련해야 한다. 그러려면 반도체 설계 자동화 도구들의 속내를 들여다 보게된다. 여러 추상화 단계마다 제각각인 오픈 소스 도구들 사이에 호환성 검증, 파일 변환 등의 작업이 필요할텐데 일일이 수정할 수는 없는 노릇이다. 이를 간편히 수행할 각종 스크립트나 유틸리티를 작성하게 되는데 쉘 스크립트, python, Tcl 등 익히 알고있는 수단을 동원하자. 일례로, 적층된 비아(stacked via)는 흔히 허용되지만 '내칩 MPW'의 공정은 절대 금지되어 있다. 경희대학교 디자인 킷에는 자동 P&R로 생성된 레이아웃에서 이를 찾아내는 파이썬 유틸리티를 포함해 여러 스크립트를 가지고 있다. 디지털 칩은 다수의 입출력 핀들이 사용된다. '내칩 MPW'에서 제작해주는 칩은 20여개의 핀에 불과 하다지만 막상 이를 테스트 하려면 막막하다. 오픈 소스 마이크로 컨트롤러 보드 '아듀이노 메가'는 40여개의 디지털 핀을 사용할 수 있다. 이를 이용하면 다신호 프로그래머블 시그널 생성기 및 로직 아날라이져를 저렴하게 꾸밀 수 있다. 설계의 검증을 위해 사용한 테스트 벤치를 칩 테스트 용도로 사용할 수 있다. 요즘 하드웨어 시뮬레이터는 C++/SystemC로 작성한 함수를 호출 할 수 있는 API들이 필수다. 컴퓨터의 주변 장치에 접근하는 방법은 대부분의 운영체제에서 허용하기 때문에 C++ 함수에서 구동 소프트웨어를 호출하면 아듀이노 보드를 통해 '내칩'과 신호를 주고 받을 수 있다. 테스트벤치 재활용을 칩 테스트까지 확장해 볼 수 있다. 규모는 비록 작지만 반도체 설계의 전과정을 수행해 볼 수 있다. 이는 반도체 산업의 전분야를 체험해 봤다고 주장해도 무리는 아니다.

[주] 오픈 소스 도구들의 디자인 킷 활용한 시뮬레이션, Arduino-FPGA 에뮬레이션, 레이아웃 생성, 패드 프레임 등 일련의 실습을 수행 할 수 있도록 예제가 준비되어 있다. https://github.com/GoodKook/ETRI-0.5u-CMOS-MPW-DK-Example--ALU8.git

'내칩 MPW'는 공짜로 칩을 만들어 준다하고 설계도구는 오픈-소스를 공짜로 쓸 수 있다. 이 얼마나 설레지 않을 수 있으랴. 디자인 킷 정도는 만들어 쓰자. 그대신 책임은 스스로 진다. 여기서 책임이란 곧 돈이다. '내칩 MPW'는 이 비용이 무서워 감히 못해볼 짓을 공짜로 해볼 수 있는 천재일우의 기회를 제공한다. 전자공학을 배우며 이제껏 주워들은 것들을 총동원하여 엮을 기회다. 구슬이 서말이라도 꿰어야 보배라고 하지 않던가!



2024년 5월 8일 수요일

"신경망(뉴럴 네트워크)": "뉴로모픽 컴퓨팅"의 "Hello, World!"

"신경망(뉴럴 네트워크)": "뉴로모픽 컴퓨팅"의 "Hello, World!"

1. 개요
2. "뉴로모픽 컴퓨팅", 생물학적 뇌를 모방하려는 시도
3. 국내 디지털 뉴로모픽 반도체 연구
4. 신경망 (Neural Network): 인공지능의 "Hello, World!"
5. C++ 크래스 로 구현한 신경망

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

1. 개요

요즘 눈만뜨면 마주치는 '인공지능'. 누구나 이야기 하지만 이를 공부하려면 무엇부터 시작해야 할지 난감하기 이를데 없다. 인간 뇌의 기작을 흉내낸다는 뉴로모픽 컴퓨팅(Neuromorphic Computing)은 전통적인 디지털 계산기는 물론 아날로그 회로를 이용해 다양한 방법으로 구현하는 시도(연구)가 이뤄지고 있다[참고].

[출처] ‘뇌 구조의 반도체로 만들다’ 뉴로모픽 반도체의 등장, https://news.skhynix.co.kr/post/jeonginseong-column-ai-6

신경망은 인공지능의 첫걸음에 해당한다. 전통적 폰 노이만 구조 컴퓨터로 신경망을 구성했을 때의 문제점으로 엄청난 계산량과 그로인한 과도한 전력 소모라 할 것이다. 이를 극복할 요량으로 시스톨릭 어레이 같은 병럴처리 구조를 취하며 계산 정밀도 낮추기등의 연구가 활발하다[Binary Neural Network].  신경망을 디지털 컴퓨터로 구현할 때 가장 큰 문제는 수많은 뉴런의 연결을 구성하는 일이다. 폰노이만 구조의 컴퓨터를 사용하는 경우 배열형 자료를 사용하여 쉽게 신경망을 구성할 수 있다. 다만 엄청난 메모리 접근이 따라야 하므로 빠른 클럭의 고성능 컴퓨터가 필요하며 이는 전력 소모의 원인이 된다. 배열형 병렬처리 구조를 채택하여 뉴런(곱셈과 누산)전용의 처리장치에 대규모 지역 메모리를 두는 구조의 연구[Wafer Scale Computing]가 이뤄져 활용되고 있다[CPU,  GPU, NPU, TPU, ...... TPU v4A Brief Guide of xPU for AI Accelerators]. 하지만 연산기 사이의 연결을 근본적으로 해결하지 못한다.

어쨌든, 본격적인 인공지능 컴퓨팅의 연구에 앞서 신경망에 대한 이해를 높여보자. "Hello, World!"는 컴퓨팅 언어를 배울때 제일 먼저 해보는 예제다. Hello, world!를 출력하는 것이 프로그래밍 언어를 배우는 첫 번째 단계로 일종의 암묵적인 룰이 되었다. 그야말로 프로그래머들에게는 국룰인 단어이다[출처]. "Hello, world!"를 출력 했다는 뜻은 컴파일 도구의 기초적인 사용법을 알며 아울러 표준 입출력 장치를 다룰 수 있다는 의미가 담겨있다. 마이크로 컨트롤러를 처음 익힌다거나 FPGA와 HDL의 첫 예제로 LED 를 깜빡이게 하는데, 'Hello, World!'격에 해당한다고 하겠다. 인공지능의 "Hello, World!"에 해당하는 예제가 바로 신경망이다. C++ 크래스로 구현한 인공지능 신경망의 예제를 소개 한다. 신경망 크래스에 학습 함수에 if 문장이 한개도 나오지 않는다. 무작위 숫자에서 시작하여 의미있는 연결 강도(웨이트)로 접근해 가는 과정을 '학습'이라 한다. 이 예제는 C++의 크래스와 템플릿의 공부에 매우 훌륭한 교재 이기도 하다.

2. "뉴로모픽 컴퓨팅", 생물학적 뇌를 모방하려는 시도

고전적인 컴퓨팅 방식에 한계(어떤?)가 와서 이제 인간의 뇌가 행동하는 방식을 반도체로 구현한 Neuromorphic Computing이 AI의 대세라는데 도데체 그게 뭔지 궁금하다면 아래 동영상을 보자. 


Neuromorphic Computing Is a Big Deal for A.I., But What Is It?

인텔의 엔지니어가 이야기 하는 뉴로모픽 컴퓨팅도 들어보자. 전기적 신호를 제어하여 인간의 뇌를 모방하려는 시도에서 시작 되었지만 엉뚱(?) 하게도 생물학적 뇌와 다른 방향으로 발전해 왔다. 오늘날 최신 '전통적 컴퓨터'는 생물학적 뇌의 '학습'과는 매우 멀다. 정밀한 계산을 빠르게 수행하는 목표에 충분히 도달하자 이제 뇌처럼 작동하는 전자기기를 만들려고 한다. 복잡한 계산을 빠르고 정확하게 수행하기에 이어 급기야 '생각하기'도 기계에 맞기고 싶어졌나보다. 인간의 수고를 기계에 맞기는데 익숙해진 인간은 이제 '생각'하기도 귀찮아졌나? 단순한 계산과 학습행동은 기계에 맞기고 좀더 높은 수준의 '생각'을 하자고 한다. 그 '생각'이 온통 '쉽게 돈벌기'에 쏠려 있지만 말이다.


Architecture All Access: Neuromorphic Computing Part 1

전통적인 컴퓨터는 한계에 도달했다. 2그램 밖에 안되는 새의 뇌는 20밀리와트의 에너지를 쓰면서도 하늘을 누빈다. 하늘을 날기는 커녕 도로위에서 움직이는 '자율주행'을 수행하는 전통적인 컴퓨터는 '학습(train)'과 '행동반응(inference)'에 관한한 새만도 못하면서 너무나 많은 에너지를 소모하고 있다. 전통적인 컴퓨터의 한계를 벗어나려고 생물학적 뇌를 들여다보고 새로운 구조를 가져야 한다는 것을 깨닳았다.


Architecture All Access: Neuromorphic Computing Part 2

3. 국내 디지털 뉴로모픽 반도체 연구

국내 여러 대학교와 연구소, 반도체 기업등에서 '인공지능 반도체'를 연구 한다고 한다. 그중 디지털 계산기 방식의 연구가 이뤄지고 있다니 들어보자.


[서울대 AI 연구원] 뉴로모픽 컴퓨팅을 활용한 차세대 컴퓨팅 시스템(지능정보융합학과 전동석 교수)


뇌를 닮은 반도체? 뉴로모픽 시스템! / 샤연소개


삼성, SK도 만든다는 그 반도체 인간 뇌 모방 '뉴로모픽 칩'


"뉴로모픽 하드웨어 디자인" - 박종길박사, KIST

4. 신경망 (Neural Network): 인공지능의 "Hello World!"

동영상에서 가장 많이 등장하는 신경망(Neural Network)은 인공지능 컴퓨팅의 첫걸음이라 할 수 있다. 필기체 숫자 인식의 수행을 새로 개발한 인공지능 컴퓨터의 성능을 측정하는 척도로 삼고 있다. 그렇다면 신경망이 뭔지 알아보자.


But what is a neural network? | Chapter 1, Deep learning

동영상의 내용을 글로 읽어보기 바란다.

https://www.3blue1brown.com/lessons/neural-networks

내용중 아래 내용이 눈길을 끈다.

Somehow identifying digits is incredibly easy for your brain to do, but almost impossible to describe how to do. The traditional methods of computer programming, with if statements and for loops and classes and objects and functions, just don’t seem suitable to tackle this problem.

필기한 그림을 보고 인간의 뇌에서 숫자를 간단하게 인식(사실은 분류!)하지만 어떻게 그렇게 수월하게 해내는지 모른다. 전통적인 컴퓨터 프로그래밍 기법, if 문장이나 for 반복문, 객체 지향적 프로그래밍 따위로 될일이 아니라는 것을 알고 있다.


Gradient descent, how neural networks learn | Chapter 2, Deep learning

이번에도 글로 읽어보자.

https://www.3blue1brown.com/lessons/gradient-descent

눈길을 끄는 문장이 나온다.

To start things off, initialize all the weights and biases to be random numbers. This network will perform horribly on the given training example since it’s just doing something random.

학습하기 전 각 뉴런 사이의 가중치는 '무작위' 숫자로 시작한다. 엄청난 계산을 수행 한 끝에 마침내 숫자를 구분할 능력을 가지게 된다. 필기한 화상을 구분 한다는 것이 '지능' 이라 할 수 있을까? 어쨌든 이 신경망은 '무작위' 숫자에서 스스로 의미있는 '능력'을 가진 숫자로 변한다. 이를 두고 네트워크가 '알아서' 학습했다는 것이다. 


What is backpropagation really doing? | Chapter 3, Deep learning


Backpropagation calculus | Chapter 4, Deep learning

5. C++ 크래스 로 구현한 신경망

인공지능의 "Hello, World!"에 해당하는 예제가 바로 신경망이다. 아래에 소개한 C++ 크래스로 구현한 인공지능 신경망의 예제를 읽어보기 바란다. 신경망 크래스의 학습 함수에 if 문장이 한개도 나오지 않는다는 점에 주목하자. C++의 크래스와 템플릿의 공부에 매우 훌륭한 예제 이기도 하다.

[CodeProject] Artificial Neural Network C++ Class, https://www.codeproject.com/Articles/5292985/Artificial-Neural-Network-Cplusplus-Class

"신경망 크래스"에 Eigen 라이브러리와 Vector STL 이 사용되고 있다. 생소하다면 아래 블로그 글을 참조하자.

[1] C++ - Eigen Library 정리 - Matrix,Vector 초기화|작성자 민초맛 젤리, https://blog.naver.com/junghs1040/222104963167
[2] [C++] vector container 정리 및 사용법 [개발자 지망생:티스토리], https://blockdmask.tistory.com/70











2024년 5월 5일 일요일

온갖 소식을 전하는 IEEE Spectrum을 구독 해보자

IEEE Spectrum 구독해보자

"IEEE Spectrum"은 IEEE에서 발행하는 월간지로 과학기술 전분야를 아우른다. 인쇄된(또는 PDF 전자문서)월간지를 받아보려면 IEEE 회원이어야 하지만 대부분 국내 대학및 교육기관(도서관)이 IEEE에 가입되어 있으므로 교내에서 어렵지 않게 접근 할 수 있다. 구독 신청을 하면 전자 메일을 통해 이 잡지에서 발행하는 소식을 받아볼 수 있다. 구독 링크는,

https://spectrum.ieee.org/newsletters/

이 소식지가 전하는 내용들을 살펴보면 아래와 같다.

Tech Alert/기술동향 속보
Groundbreaking technology and science news from the editors of IEEE Spectrum, delivered every Thursday/IEEE 스펙트럼 편집자들이 선정한 획기적인 과학기술 동향. 매주 목요일 발행.

AI Alert/인공지능 속보
Biweekly newsletter featuring the news you need about machine learning algorithms and applications/인공지능 관련 기계학습 알고리즘과 응용에 관한 소식. 격주간 발행

Climate Tech Alert/기후 기술 속보
The latest in emerging technologies for combating climate change, delivered twice a month direct to your inbox/최근 높은 관심을 받고 있는 지구 환경변화에 관련된 기술소식. 매달 2회 발행

Robotics News/로봇 소식
Biweekly newsletter on advances and news in robots, drones, and automation/로봇, 드론 그리고 자동화 관련 소식. 격주 발행

Career Alert/직업 속보
Weekly newsletter featuring the latest information on jobs, education, management, and the engineering workplace/취업, 교육, 관리, 기술 업종관련 소식. 매주발행

The Future Lane/미래의 도로
Biweekly newsletter about the sensors, software, and systems that are making cars smarter/미래의 지능적인 자동차에 적용될 센서, 소프트웨어, (자율주행)시스템을 다룬다. 매주 발행

University Spotlight/대학 특집
Monthly newsletter with the latest in continuing education programs, degrees, and certificates for engineers/대학의 교육, 학위과정 소개, 공학인증에 관한 최신 소식. 월간발행

Product Spotlight/흥미로운 제품
Biweekly newsletter with the latest in engineering and advanced technology product updates/최신 기술을 적용한 제품들 소개

그외에도 과학기술의 역사, 메이커 DIY, 아마추어무선, 천문관측등의 취미에 전기전자기술들이 적용되는 사례등 다양한 영역의 소식들을 전하고 있다.

https://spectrum.ieee.org/search/?q=DIY
https://spectrum.ieee.org/search/?q=Astronomy
https://spectrum.ieee.org/search/?q=HAM%20radio

재미있는 기사들 몇가지 소개,

1959년 첼시 꽃 박람회(정원 가꾸기 취미가들의 로망)에서 소개된 무선 잔디깍기 자동차
https://spectrum.ieee.org/the-1959-robot-that-mowed-the-road-to-nowhere

새삼스레 주목받고 있는 아날로그 컴퓨터
https://spectrum.ieee.org/try-this-new-analog-computer

반도체 부품 패키지 기술은 어디까지? 웨이퍼 수준에서 컴퓨터
https://spectrum.ieee.org/tsmc-advanced-packaging









2024년 3월 18일 월요일

오픈-소스 도구로 구글과 함께 내 칩을 만들어보세요(Build Custom Silicon with Google)

오픈-소스 도구로 구글과 함께 내칩을 만들어보세요

아래 내용은 "Build Custom Silicon with Google"에서 가져왔습니다.

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

소프트웨어처럼 누구나 규모에 맞게 커스텀 실리콘을 더 쉽게 빌드할 수 있습니다.
Make custom silicon easier to build for everyone, at scale, just like software.

자체 실리콘 빌드
Build your own silicon

Google은 GlobalFoundries, SkyWater Technology, Efabless와 제휴하여 모든 개발자가 제조 가능한 실리콘 디자인을 만들 수 있는 완전 오픈소스 프로세스 설계 키트 (PDK) 및 도구 모음을 제공하고 있습니다.

Google is partnering with GlobalFoundries, SkyWater Technology and Efabless to provide fully open source Process Design Kits (PDKs) and toolchains so that any developer can create manufacturable silicon designs.

2개월마다 OpenMPW 셔틀 프로그램에 포함될 오픈소스 디자인을 제출하여 무료로 제조될 기회를 얻을 수 있습니다.

Every other month, you can submit your open source designs to be included in the OpenMPW shuttle program and get a chance to get them manufactured at no cost.

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

구글이 왜이러는 거죠?
Google's Open Source Hardware Dreams

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

오픈-소스와 함께 전용 반도체 설계의 새막이 열렸다.

* 아래 글은 저(goodkook@gmail.com)의 개인적 생각입니다.

구글은 130나노 공정 PDK를 공개하고 오픈 소스 반도체 설계 도구의 활용을 권장하며 낮은 비용으로 MPW도 운용하고 있다. 구글은 왜이럴까?

지난 십여년은 CPU로 대변되는 범용 반도체가 주류였다. 범용 반도체는 대규모로 집적이 가능하면서 비교적 개발기간도 짧고 위험도 적었다. 심지어 설계 오류를 원래 그런 '기능'이라고 우기기도 한다. 공정기술 덕에 범용 반도체는 거대규모 집적과 기가 헤르츠 대의 속도를 자랑한다. 인간을 뛰어 넘는다면서 바둑대전을 벌인답시고 수천대의 CPU를 동원 했다고 한다. 그렇게 모두 '인공지능' 열광 하게 됐다. 멋지긴 한데 CPU를 대규모로 동원 하려니 전력 낭비가 심하다. 범용 반도체 CPU에서 기가 헤르츠로 작동하는 알고리즘이 전용 반도체에서 수천분의 일의 속도로 낮출 수 있다는 것은 두말할 필요도 없다. 다 알고 있었지만 그리 못했던 이유는 유연성이 떨어지는 전용 반도체는 설계의 검증이 너무 고됐기 때문이다. 반도체 설계가 극히 일부의 전유물 처럼 여겨졌기 때문이다. 설계 도구와 방법론이 폐쇄적 이었던 탓이다. 이를 극복할 방법으로 소프트웨어 개발 도구 GCC에서 그랬던 것처럼 하드웨어 설계도 오픈-소스화 하여 다양한 검증된 라이브러리를 구축 하려고 한다. 이에 맞춰 오픈-소스 반도체 설계 도구 프로젝트 OpenROAD의 활동이 활발하다.

https://theopenroadproject.org/

[출처] OpenROAD: Toward a Self-Driving,Open-Source Digital Layout Implementation Tool Chain[Link]

8~90년대 하드웨어 기술 언어와 함께 흥했다가 집적된 크기와 검증의 고됨을 감당하지 못하고 블록 기반의 범용 CPU와 소프트웨어에 밀려났던 전용 반도체 설계의 새로운 도약이 시작되었다.

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

[참고]

1] "유망시장 Issue Report / AI 반도체", 연구개발 특구 진흥 재단 INNOPOLIS, https://www.innopolis.or.kr/fileDownload?titleId=178582&fileId=1&fileDownType=C&paramMenuId=MENU00999

2] OpenROAD: Toward a Self-Driving,Open-Source Digital Layout Implementation Tool Chain, https://vlsicad.ucsd.edu/Publications/Conferences/370/c370.pdf

3] The OpenROAD Project, https://theopenroadproject.org/

4] Tiny Tapeout, https://tinytapeout.com/

5] eFabless, https://efabless.com/

6] Build Custom Silicon with Goodle, https://developers.google.com/silicon

7] SkyWater, Open Source PDK, https://github.com/google/skywater-pdk

8] An Open-Source and Autonomous Temperature Sensor Generator Verified With 64 Instances in SkyWater 130 nm for Comprehensive Design Space Exploration, https://blaauw.engin.umich.edu/wp-content/uploads/sites/342/2022/09/An-Open-Source-and-Autonomous-Temperature-Sensor-Generator-Verified-With-64-Instances-in-SkyWater-130-nm-for-Comprehensive-Design-Space-Exploration.pdf

9] Analog in-memory subthreshold deep neural network accelerator, https://ieeexplore.ieee.org/document/7993629

10] What is Silicon-Photonics?https://www.synopsys.com/glossary/what-is-silicon-photonics.html

11] Running Neural Networks on Meshes of Light,

12] Zero to ASIC Course, https://zerotoasiccourse.com/matt_venn/

13] SiFive Powers Google TPU, NASA, Tenstorrent, Renesas, Microchip, And More, RISC-V Is The Standard For non-user-facing functions., https://www.semianalysis.com/p/sifive-powers-google-tpu-nasa-tenstorrent

14] AV1 Arithmetic Encoder Design on Open-Source EDA, https://www.researchgate.net/publication/364421419_AV1_Arithmetic_Encoder_Design_on_Open-Source_EDA

15] Free Silicon Foundation, https://wiki.f-si.org/index.php?title=Free_Silicon_Foundation

16] Free and Open Source Silicon Movement, https://fossi-foundation.org/

17] The Promise of Open Source Semiconductor Design Tools,

18] "Hermes-Lite: Amateur Radio SDR", FOSSi Foundation Latch-Up, https://youtu.be/qlgq52IIUo8?si=AUDwf6IqoWS_Zv-d



2024년 3월 12일 화요일

반도체 공정을 설명하는 영상 두편, 그리고 표준 셀 D-FlipFlop 제작 노트

반도체 공정을 설명하는 영상 두편, 그리고 표준 셀 D-FlipFlop 제작 노트

모래에서 웨이퍼 그리고 반도체 트랜지스터가 되기까지 과정을 보여주는 동영상

p-채널/n-채널 트랜지스터 그리고 인버터 레이아웃

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

셋과 리셋이 달려있는 D 플립플롭 표준 셀: DFFSR

74HC74 D-FlipFlop의 데이터 쉬트 중 기능 도(Functional Diagram)

트랜지스터 회로도 그리기

오픈소스 도구 XSChem 사용 트랜지스터 회로도 그리기

표준 셀 레이아웃

표준 셀의 기하학적 기준

오픈-소스 도구 Magic 사용 표준 셀 DFFSR의 레이아웃


레이아웃과 회로도 비교(LVS, Layout vs. Schematic)

        NetGen: 트랜지스터 수준 네트리스트 비교에 사용된 오픈-소스 도구

SPICE 시뮬레이션

Magic 레이아웃에서 추출한 트랜지스터 네트리스트

    * NGSPICE file created from DFFSR.ext - technology: scmos
    .option scale=0.15u

    .subckt DFFSR D S R CLK Q vdd gnd

    M1000 a_64_14# a_60_10# gnd gnd nfet w=40 l=4
    +  ad=0.16n pd=48u as=0.4n ps=60u
    M1001 a_126_86# CLK vdd vdd pfet w=40 l=4
    +  ad=0.56n pd=0.108m as=0.32n ps=56u
    M1002 a_146_14# a_126_86# a_60_10# gnd nfet w=20 l=4
    +  ad=0.16n pd=36u as=0.16n ps=36u
    M1003 a_296_14# S a_380_14# gnd nfet w=40 l=4
    +  ad=0.64n pd=0.112m as=0.16n ps=48u
    M1004 gnd a_326_14# Q gnd nfet w=20 l=4
    +  ad=0.28n pd=68u as=0.28n ps=68u
    M1005 a_36_10# S a_64_14# gnd nfet w=40 l=4
    +  ad=0.64n pd=0.112m as=0.16n ps=48u
    M1006 a_146_14# a_122_10# a_60_10# vdd pfet w=20 l=4
    +  ad=0.3n pd=56u as=0.16n ps=36u

        ......

    M1029 vdd a_326_14# Q vdd pfet w=40 l=4
    +  ad=0.56n pd=0.108m as=0.56n ps=0.108m
    M1030 a_296_14# a_122_10# a_276_14# vdd pfet w=20 l=4
    +  ad=0.28n pd=68u as=0.16n ps=36u
    M1031 a_380_14# a_326_14# gnd gnd nfet w=40 l=4
    +  ad=0.16n pd=48u as=0.36n ps=58u
    C0 Q gnd 7.47f
    C1 CLK gnd 9.24f
    C2 D gnd 3.67f
    C3 S gnd 13.8f
    C4 R gnd 14.2f
    C5 vdd gnd 53.3f
        ......

    .ends

ETRI 공정 파라메터를 적용한 SPICE 테스트 벤치

    * NGSPICE TB
    *.include 05cmos_model_spice_231025.lib
    .include amic5_mosfet_model.lib
    .include DFFSR.spice
    
XDFFSR_0 D S R CLK Q VDD GND DFFSR
    R0 VDD Q 5000
    VDD VDD GND 5
    
VSin S GND PWL(0n 5 40n 5 50n 0 140n 0 150n 5)
    VRin R GND PWL(0n 5 240n 5 250n 0 340n 0 350n 5)
    VDin D GND PWL(0n 0 540n 0 550n 5 740n 5 750n 0)
    VClk CLK GND pulse(0 5.0 100n 10n 10n 80n 200n)

    .tran 0.01n 800n
    .save all
    .control

    run

    plot S CLK Q
    plot R CLK Q
    plot D CLK Q

    .endc

    .GLOBAL VDD
    .GLOBAL GND

    .end

오픈-소스 회로시뮬레이터 ngSPICE 사용

입력 S:

입력 R:

입력 D:

클럭 CLK:

출력 Q:

클럭 CLK와 출력 Q:

표준 셀 DFFSR의 타이밍 시뮬레이션 베릴로그(Verilog) 모델

* 주의: 아래 모델의 지연 파라메터는 실제 공정을 반영하고 있지 않음

`celldefine
module DFFSR (CLK, D, R, S, Q);
input  CLK ;
input  D ;
input  R ;
input  S ;
output Q ;
reg NOTIFIER ;

   not (I0_CLEAR, R);
   not (I0_SET, S);
   udp_dff (P0003, D_, CLK, I0_SET, I0_CLEAR, NOTIFIER);
   not (D_, D);
   not (P0002, P0003);
   buf (Q, P0002);
   and (\D&S , D, S);
   not (I7_out, D);
   and (\~D&R , I7_out, R);
   and (\S&R , S, R);

   specify
     // delay parameters
     specparam
       tphlh$S$Q = 0.46:0.46:0.46,
       tpllh$R$Q = 0.33:0.33:0.33,
       tphhl$R$Q = 0.4:0.41:0.41,
       tpllh$CLK$Q = 0.57:0.57:0.57,
       tplhl$CLK$Q = 0.65:0.65:0.65,
       tminpwl$S = 0.064:0.26:0.46,
       tminpwl$R = 0.043:0.23:0.41,
       tminpwh$CLK = 0.32:0.49:0.65,
       tminpwl$CLK = 0.3:0.33:0.37,
       tsetup_negedge$D$CLK = 0.094:0.094:0.094,
       thold_negedge$D$CLK = 0.094:0.094:0.094,
       tsetup_posedge$D$CLK = 0.19:0.19:0.19,
       thold_posedge$D$CLK = 0.000000062:0.000000062:0.000000062,
       trec$R$CLK = -0.19:-0.19:-0.19,
       trem$R$CLK = 0.28:0.28:0.28,
       trec$R$S = 0.000000062:0.000000062:0.000000062,
       trec$S$CLK = 0:0:0,
       trem$S$CLK = 0.19:0.19:0.19,
       trec$S$R = 0.094:0.094:0.094;

     // path delays
     (CLK *> Q) = (tpllh$CLK$Q, tplhl$CLK$Q);
     (R *> Q) = (tpllh$R$Q, tphhl$R$Q);
     (S *> Q) = (tphlh$S$Q, 0);
     $setup(negedge D, posedge CLK &&& \S&R , tsetup_negedge$D$CLK, NOTIFIER);
     $hold (negedge D, posedge CLK &&& \S&R , thold_negedge$D$CLK,  NOTIFIER);
     $setup(posedge D, posedge CLK &&& \S&R , tsetup_posedge$D$CLK, NOTIFIER);
     $hold (posedge D, posedge CLK &&& \S&R , thold_posedge$D$CLK,  NOTIFIER);
     $recovery(posedge R, posedge CLK &&& \D&S , trec$R$CLK, NOTIFIER);
     $removal (posedge R, posedge CLK &&& \D&S , trem$R$CLK, NOTIFIER);
     $recovery(posedge R, posedge S, trec$R$S, NOTIFIER);
     $recovery(posedge S, posedge CLK &&& \~D&R , trec$S$CLK, NOTIFIER);
     $removal (posedge S, posedge CLK &&& \~D&R , trem$S$CLK, NOTIFIER);
     $recovery(posedge S, posedge R, trec$S$R, NOTIFIER);
     $width(negedge S, tminpwl$S, 0, NOTIFIER);
     $width(negedge R, tminpwl$R, 0, NOTIFIER);
     $width(posedge CLK, tminpwh$CLK, 0, NOTIFIER);
     $width(negedge CLK, tminpwl$CLK, 0, NOTIFIER);

   endspecify

endmodule
`endcelldefine

primitive udp_dff (out, in, clk, clr, set, NOTIFIER);
   output out;
   input  in, clk, clr, set, NOTIFIER;
   reg    out;

   table

// in  clk  clr   set  NOT  : Qt : Qt+1
//
   0  r   ?   0   ?   : ?  :  0  ; // clock in 0
   1  r   0   ?   ?   : ?  :  1  ; // clock in 1
   1  *   0   ?   ?   : 1  :  1  ; // reduce pessimism
   0  *   ?   0   ?   : 0  :  0  ; // reduce pessimism
   ?  f   ?   ?   ?   : ?  :  -  ; // no changes on negedge clk
   *  b   ?   ?   ?   : ?  :  -  ; // no changes when in switches
   ?  ?   ?   1   ?   : ?  :  1  ; // set output
   ?  b   0   *   ?   : 1  :  1  ; // cover all transistions on set
   1  x   0   *   ?   : 1  :  1  ; // cover all transistions on set
   ?  ?   1   0   ?   : ?  :  0  ; // reset output
   ?  b   *   0   ?   : 0  :  0  ; // cover all transistions on clr
   0  x   *   0   ?   : 0  :  0  ; // cover all transistions on clr
   ?  ?   ?   ?   *   : ?  :  x  ; // any notifier changed

   endtable
endprimitive // udp_dff

표준 셀 DFFSR의 합성기용 리버티(Liberty) 모델

* 주의: 아래 모델의 지연 파라메터는 실제 공정을 반영하고 있지 않음

    library(etri05_stdcells) {
        ......

        cell (DFFSR) {
            area : 1584;
            cell_leakage_power : 0.532978;
            ff (P0002,P0003) {
                next_state : "D";
                clocked_on : "CLK";
                clear : "(!R)";
                preset : "(!S)";
                clear_preset_var1 : L;
            }
            pin(CLK)  {
                direction : input;
                capacitance : 0.0161478;
                ......
            }
            pin(D)  {
                direction : input;
                capacitance : 0.0162024;
                rise_capacitance : 0.0161472;
                fall_capacitance : 0.0162024;
                internal_power() {
                    rise_power(passive_energy_template_6x1) {
                    ......
                    }
                    fall_power(passive_energy_template_6x1) {
                    ......
                    }
                }
                timing() {
                  related_pin : "CLK";
                  timing_type : hold_rising;
                  when : "S&R";
                  sdf_cond : "S\&R";
                  rise_constraint(hold_template_3x6) {
                    ......
                  }
                  fall_constraint(hold_template_3x6) {
                    ......
                  }
               }
            }
            pin(Q)  {
                direction : output;
                capacitance : 0;
                rise_capacitance : 0;
                fall_capacitance : 0;
                max_capacitance : 0.408128;
                function : "P0002";

                ......
            }
            pin(R)  {
                ......
            }
            pin(S)  {
                ......
            }
        }
    }

* 리버티는 합성기에서 참조하는 모델이다. 타이밍 구동 합성을 지원하지 않는 Yosys 합성기는 셀의 입출력 핀의 기능을 참조하여 테크놀로지 매핑을 실시한다. 위의 DFFSR 셀의 기능은 플립-플롭 ff() 으로 D 핀의 입력이 CLK에 의해 출력 Q 로 반영됨을 기술하고 있다. 복합 게이트 AOI21 의 경우 출력 Y의 기능은 입력 A, B, C의 논리식으로 표현 된다.

cell (AOI21X1) {
  pin(Y)  {
    direction : output;
    capacitance : 0;
    rise_capacitance : 0;
    fall_capacitance : 0;
    max_capacitance : 0.375698;
    function : "(!((A B)+C))";

    ......

    }
  ......
}

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


2023년 12월 5일 화요일

[주간강좌] MPW 참여 및 심화학습 수행 결과 보고서 [1차평가]

[주간강좌] MPW 참여 및 심화학습 수행 결과 보고서 [1차평가]

오늘(12월 5일) MPW 및 심화학습에 참여하는 3개 학습조의 보고서(에세이)를 받았습니다. 모두 훌륭한 결과를 냈습니다.  제출된 보고서에 대하여 몇가지 조언을 했으니 각 학습조는 이를 감안하여 수정 하시기 바랍니다. 최종본은 출판될 수 있도록 방안을 모색하려고 하니 잘 다듬어서 제출 하십시요. 최종 제출 기한은 12월 17일로 합니다. 그 이전이라도 제출 하여 점검을 받도록 합시다. 각 학습조의 보고서는 공유할 터이므로 참고하고 논의 하시기 바랍니다.

1차로 제출된 보고서는 아래와 같습니다.

김태근 외: https://drive.google.com/file/d/1BKP2waiQkCJEZSpR82pCtxb25f7A1w8x/view?usp=sharing

지하은 외: https://drive.google.com/file/d/1BHRjNtXjnM11ID83hN8BmElZVAUVDg5K/view?usp=sharing

채수용 외: https://drive.google.com/file/d/1B7alzu88QEu2OB34UE7KT9Xmxt8Wm7Ow/view?usp=drive_link

오픈 소스 반도체 설계 도구의 의의를 설명할 때 인용하기 좋은 참고 문헌

https://par.nsf.gov/biblio/10171024-openroad-toward-self-driving-open-source-digital-layout-implementation-tool-chain

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

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.


2023년 10월 23일 월요일

[주간세미나] 표준 셀 STD-CELL 제작(2)

[주간세미나] 표준 셀 STD-CELL 제작(2)

날자: 10월 24일
장소: 226호
시간: 오후 6시~

내용:

- 표준 셀 관련 공부는 10월 말로 마감
- STD-CELL 에 대한 이해가 충분히 이뤄 졌을 것(추가 질문과 논의)
- Open-Source Tool 활용 LVS, LVL 및 회로 시뮬레이션:
    Magic Layout, XSchem Schematic, Netgen LVS, NgSpice,  IRSIM

- 12Track 표준 셀 제작(LEF 생성, LVS, SPICE 시뮬레이션)
   osu050_stdcell 은 9Track 임


2023년 10월 12일 목요일

[주간세미나] 표준 셀 STD-CELL 제작

[주간세미나] 표준 셀 STD-CELL 제작

날자: 10월 13일
장소: 226호
시간: 오후 6시~

내용:

- 표준 셀 STD-CELL 의 이해

- 레이아웃 드로잉 툴 Virtuoso 또는 Magic  사용법 숙지

- 표준 셀 제작 가이드 배포

- Magic 테크 파일 배포

- 표준 셀 제작법 실습 (GDS, LEF 생성, SPICE 시뮬레이션)

* MPW 를 통해 '내 칩'을 만들어 보고자 하는 자는 모두 참석할 것


2023년 10월 5일 목요일

[주간세미나] MPW 중간점검(설계툴 사용법)

[주간세미나] MPW 중간점검(설계툴 사용법)

날자: 10월 6일
장소: 226호
시간: 오후 6시~

내용:

- My Chip MPW의 설계 DB 마감이 한달여 남음에 따라 중간 점검을 실시합니다.

    1. 'RTL 에서 GDS'까지 설계과정 이해(Synthesis/Place/Route/LVS/GDS & Simulation)
    2. 각 과정에서 사용될 툴 및 중간 파일의 이해 (Verilog/LEF/DEF/GDS)
    3. 공식 툴 Cadence/Virtuoso 사용법

- 고위합성(HLS) 도구의 기술 동향 [논문 함께 읽어보기]
https://hls-goodkook.blogspot.com/2023/10/automatic-high-level-code-deployment.html

[실습과제] 심화학습의 각 조는 아래 내용을 실습하고 보고서를 제출 할 것

    MPW 공식 툴 Cadence/Virtuoso 사용법 및 공개 STD-CELL 활용

    1. ETRI의 Cadence/Virtuoso 레이아웃에서 GDS 생성 실습

        1-1. ETRI의 PDK에 포함된 예제 중 I/O 셀, INV 에 대하여
        1-2. INV, PIC, POB8, PVDD, PVSS, IOFILLER10 을 GDS로 변환 하고,
        1-3. 생성된 GDS 보고서에 첨부할 것

    2. osu050 표준 셀 활용 실습

        2-1. osu050의 테크 파일을 ETRI의 레이어 번호에 맞춰 수정하고
        2-2. 표준 셀 중 AND2X1, DFPOSX1 셀에 대하여 GDS 를 생성 하고
        2-3. Cadence/Virtuoso 로 읽어 들인 후
        2-4. DRC 를 실시할 것


2023년 9월 23일 토요일

[주간강좌] MPW 공식 툴 Cadence/Virtuoso실습 토론

[주간강좌] MPW 공식 툴 Cadence/Virtuoso실습 토론

날자: 9월 22일
장소: 226호
시간: 오후 6시

내용:

- MPW 선정됨에 따라 ETRI의 공정룰 PDK 가 배포 되었음.
- PDK 에 포함된 Cadence/Virtuoso 의 예제에 따라 사용법을 익힐 것
    (Candence 툴 사용 교내 서버 계정을 담당 조교에게 신청하면 생성해 줄 것임)
- 각 학습조는 예제 실습을 수행하고 그 내용을 학습 토론 보고서로 작성, e-mail 제출 할 것
- 토론 주안점:
    1. 테크 룰 이해 및 예제의 DRC 수행
    2. 현재 확보한 오픈 소스 표준 셀 라이브러리를 공식 툴로 포팅
    3. ETRI의 I/O 패드 셀을 Magic 툴로 변환
        (oa, mag 파일변환시 고려할 사항은?)


2023년 9월 13일 수요일

[주간세미나] 디지탈 신호처리 알고리즘 DCT 의 VLSI 구현 예

[주간세미나] 디지탈 신호처리 알고리즘 DCT 의 VLSI 구현 예

날자: 2023년 9월 15일(금)
시간: 오후 6시~
장소: 226호
내용:
DCT 알고리즘의 자료 의존성 분석
- 파이프라인 병렬처리 구조
- 9월 9일자 공지 내용: 심화 학습 반 토론 준비할 것
https://fun-teaching-goodkook.blogspot.com/2023/09/parallel-computing-computing-in-memory.html

기타 토의사항: "오늘의 반도체 설계 방법은 20년전과 달라 졌을까?"
    https://goodkook.blogspot.com/2023/09/20.html

아래 두 글을 읽고 토론
1) "마이크로프로세서 설계 무작정 따라하기" (2001년 IDEC 뉴스레터 연재기사)
    http://donny.co.kr/wp/?cat=71

2) QFlow 오픈 소스 반도체 설계 툴 실습
    https://fun-teaching-goodkook.blogspot.com/2023/09/qflow-command-line.html



2023년 9월 9일 토요일

[주간 세미나/심화학습 토의과제] Parallel Computing 과 Computing-in-Memory

[주간 세미나/심화학습 토의과제] Parallel Computing 과 Computing-in-Memory

[개요]

인공지능, 기계학습의 구현에 많은 컴퓨팅 자원이 소요 되는 만큼 고전적인 컴퓨터 구조의 약점이 드러나자 계산 전용 반도체 대한 관심이 증가하고 연구개발이 활발하다.

병렬 컴퓨팅에 대한 연구개발은 이미 한세대 전부터 상당한 관심속에 수행되었고 슈퍼 컴퓨터라는 결과를 낳아 활용되고 있다.

Parallel Computing
https://en.wikipedia.org/wiki/Parallel_computing

최근 그래픽 처리장치 GPU를 병렬 게산 장치로 활용하게 됨으로써 대규모 슈퍼 컴퓨터에서 개인형 슈퍼 컴퓨터라 할 수 있는 단계에 이르게 되었다.

CUDA

계산전용 고속 반도체의 개발은 알고리즘의 분석에서 시작한다. 알고리즘의 데이터 의존성을 분석하여 병렬성을 도출하고 이를 빠르게 수행하도록 재구조화 한다. 벡터화는 가장 널리 활용되는 구조라 할 것이다.

Vector Processor
https://en.wikipedia.org/wiki/Vector_processor

디지털 신호처리, 인공지능의 뉴럴 네트워크 알고리즘은 병렬 벡터 처리하기 적합한 계산 구조를 가지고 있다.

Parallel Processing (DSP Implementation)
https://en.wikipedia.org/wiki/Parallel_processing_(DSP_implementation)

[토의사항]

* 심화학습 참여 학습조는 아래 내용에 대하여 조별 토론 후 9월 15일까지 제출 할 것

1. Concurrency vs. Parallelism 의 차이에 대하여 논의해 보라. 아울러 고전적인 컴퓨터 구조에서 병렬처리가 어려웠던 원인을 논의해 보라.

2. Parallel Processing 과 Computing-in-Memory [관련글] 의 관계(또는 발전 과정)에 대해여 토론해 보자.

3. Matrix-Vector 곱셈 알고리즘의 병렬성을 찾아보라.

void dct_1d(dct_data_t src[DCT_SIZE], dct_data_t dst[DCT_SIZE])
{
  unsigned int k, n;
  int tmp;
  const dct_data_t dct_coeff_table[DCT_SIZE][DCT_SIZE] = {
    8192,  8192,  8192,  8192,  8192,  8192,  8192,  8192,
   11363,  9633,  6436,  2260, -2260, -6436, -9632,-11362,
   10703,  4433, -4433,-10703,-10703, -4433,  4433, 10703,
    9633, -2260,-11362, -6436,  6436, 11363,  2260, -9632,
    8192, -8192, -8192,  8192,  8192, -8191, -8191,  8192,
    6436,-11362,  2260,  9633, -9632, -2260, 11363, -6436,
    4433,-10703, 10703, -4433, -4433, 10703,-10703,  4433,
    2260, -6436,  9633,-11362, 11363, -9632,  6436, -2260

  };

  for (k = 0; k < DCT_SIZE; k++) {
    for(n = 0, tmp = 0; n < DCT_SIZE; n++) {
      int coeff = (int)dct_coeff_table[k][n];
      tmp += src[n] * coeff;
    }
    dst[k] = DESCALE(tmp, CONST_BITS);
  }
}

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


2023년 9월 8일 금요일

Computing-in-Memory (CiM) 란 무엇인가? / "Top Programing Language 2023"

Computing-in-Memory (CiM) 란 무엇인가? / "Top Programing Language 2023" IEEE Spectrum Magazine, Sep.,2023

반도체 설계 도구는 그저 도구일 뿐이다. 그동안 반도체 설계의 과정을 개략적으로 이해한 만큼 도구에서 알고리즘과 그에 맞는 컴퓨팅 구조로 시야를 넓혀보자. 인공지능과 기계학습이 각광을 받으며 대두된 CiM에 대하여 '주간 세미나' 논의해 보는 시간을 가져보기로 한다.

어울러 IEEE 에서 설문으로 가장 각광받고 있는 컴퓨팅 언어를 조사한 결과를 Spectrum 지 9월호에 발표했다. 함께 읽어보고 토의해 보자.

==================================================

What is In-Memory Computing means ?
https://www.techopedia.com/definition/28539/in-memory-computing

https://hazelcast.com/glossary/in-memory-computation/

In-Memory Processing

https://en.wikipedia.org/wiki/In-memory_processing

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

Types of In-Memory Computing
https://www.gridgain.com/wiki/Types_of_In-Memory_Computing

Contents
  1. In-Memory Database Caching
  2. In-Memory Data Grid
  3. In-Memory Databases
  4. In-Memory Streaming
  5. In-Memory Accelerators
  6. In-Memory Computing Platforms

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

Event data-based computation-in-memory(CiM) configuration by co-designing  integrated in-sensor and CiM computing for extremely energy-efficient edge computing
https://iopscience.iop.org/article/10.35848/1347-4065/ac5533/pdf
https://iopscience.iop.org/article/10.35848/1347-4065/ac5533/meta

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

An efficient VLSI architecture for data encryption standard and its FPGA implementation
https://ieeexplore.ieee.org/document/7593054/authors

FPGA implementation of fast digital FIR and IIR filters
https://www.researchgate.net/publication/331992222_FPGA_implementation_of_fast_digital_FIR_and_IIR_filters

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

VLSI @ NU
http://nu-vlsi.eecs.northwestern.edu/publication.html

A General-Purpose Compute-in-Memory Processor Combining CPU and Deep Learning with State-of-the-art CPU Efficiency and Enhanced Data Locality, VLSI Symposium on Circuits and Technology (VLSI), 2023.(pdf)

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

IEEE Explorer (Search keyword: VLSI)
https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=vlsi

Functional verification of DSP based on-board VLSI designs
https://ieeexplore.ieee.org/document/7593030

====================================================

IEEE Spectrum Magazine
https://spectrum.ieee.org/

Top Programing Language 2023
https://spectrum.ieee.org/the-top-programming-languages-2023

2023년 최고 인기 컴퓨팅 언어는 파이썬(Python)
https://goodkook.blogspot.com/2023/09/2023-python.html

=====================================================

Area, Speed and Power Optimized Implementation of a Band‑Pass FIR Filter Using High‑Level Synthesis
https://www.researchgate.net/publication/353012635_Area_Speed_and_Power_Optimized_Implementation_of_a_Band-Pass_FIR_Filter_Using_High-Level_Synthesis



2023년 9월 3일 일요일

[주간세미나/강좌] QFlow 실습/심화학습 안내 (2023년 9월 5일/8일)

[주간세미나] QFlow 오픈 소스 반도체 설계 도구 실습

날자: 2023년 9월 5일(화)
시간: 오후 6시~
내용:

- QFlow 설치 ( http://opencircuitdesign.com/qflow/index.html )
- QFlow GUI 튜토리얼 ( http://opencircuitdesign.com/qflow/tutorial.html )
- QFlow Command-Line 튜토리얼 ( http://opencircuitdesign.com/qflow/tutorial_nogui.html )

[주간강좌] 반도체 설계 심화학습 안내

날자: 2023년 9월 8일(금)
시간: 오후 6시~
내용:

- 반도체 설계 심화학습 안내
- Magic VLSI Layout 사용법

[주] 23년 2학기중 주간 세미나와 강좌는 화요일과 금요일 오후 6시에 열립니다.


2023년 8월 26일 토요일

[Q&A] "내 칩(My Chip)" MPW 관련

[Q&A] "내 칩(My Chip)" MPW 관련

"내 칩(My Chip)" MPW와 관련하여 질문이 있어 아래와 같이 알려 드립니다.

1. 이번 MPW 제작은 과학기술 정통부 주관하는 공모전 입니다. 교내 학사운영(학점 부여, 장학혜택 )과 무관 합니다.

2. MPW 제작 신청을 접수하면 이를 바탕으로 관계 기관의 선정 절차를 거치게 됩니다. 따라서 모든 신청이 칩으로 제작 되지 않습니다.

질문1] 신청할 때 팀을 미리 꾸려야 하는 것인가요? 혼자 신청하면 설계를 신청한 사람들과 같은 한 팀이 되어 설계를 진행하나요?

MPW 제작 신청 시 팀을 꾸리도록 되어 있을 뿐입니다. 신청한 설계가 선정 될 경우 해당 팀원들이 합동으로 설계 또는 개인 별 설계도 무방합니다. 다만, 칩 제작에 제출할 최종 설계 물은 내부 절차(DRC 부합 여부, 시뮬레이션의 정확성)를 거쳐 선정 합니다. 신청서의 대표 학생은 해당 설계에 관한 연락 임무를 받게 됩니다.

질문2]  참여자에게 "독립 심화 학습 " 3학점으로 인정이 되는 것인가요?

그렇지 않습니다. MPW 제작은 교내 학사 운영과 무관한  외부 공모입니다. "독립 심화 학습"으로 학점을 받으려면 이미 공지된 대로 수강 신청을 했어야 합니다. 이번 학기 "독립 심화 학습" 학점 신청은 마감 되었습니다. 

질문3] "컴퓨터 구조" 수업은 들었지만 "VLSI 설계"를 수강하지 않아도 괜찮을까요?

신청서의 연계 학과목은 이번 MPW와 연계된 수업 과정이 우리 학교 내에 개설 되어 있다는 뜻입니다. 이를 선수 과목으로 이수해야 하는 조건은 아닙니다.해당 과목의 수강하지 않고도 설계를 할 수 있다면 능력자 입니다. 능력을 보여 주세요.

질문4] 한 학기 동안 설계하는 것인가요?

MPW 제작은 외부 공모이며 학사 일정과는 무관 합니다. 11월 중순에 예정된 설계물 제출 시한 전까지 완료해야 합니다.

질문5] 관련 이론이나 수업을 따로 진행하나요? 아니면 개인이나 팀이 처음부터 따로 공부해서 진행하는 것인가요?

관련 수업은 따로 없습니다. 반도체 전공 트랙에서 매주 반도체 설계에 관한 세미나와 강좌를 개최할 것이므로 참여 하고 질문 하십시요. 세부 학습은 학생의 역량에 달렸습니다. 자율적으로 참여 하십시요.

질문6] 이번 신청 접수에 명단을 올리지 않았더라도 MPW 제작에 참여 할 수 있습니까?

없습니다. 모든 학생의 무질서한 요구를 모두 수용 할 수 없기 때문 입니다. MPW 제작 의사가 있고 이를 성실히 수행하겠다는 약속을 해야 합니다.

질문7] "독립 심화 학습"을 신청한 경우 MPW 제작에 선정되지 않았더라도 학점이 부여 되나요?

"독립 심화 학습"의 학점과  MPW 제작 여부는 별개 사항 입니다. 모든 MPW 제작 신청이 선정으로 이어지지 않습니다. MPW 제작과 학사 운영이 별개로 진행 되는 이유 입니다. "독립 심화 학습"을 신청한 학습 조는 자신들이 제출한 학습 계획에 맞게 결과를 도출 해야 하며 공지된 요구에 부합할 경우에 학점이 부여 됩니다.

질문8] MPW 신청 접수 시 개별 아이디어를 지원 할 수 있습니까?

개별 아이디어를 원할 경우 8월 30일 MPW 접수 설명 세미나 전까지 신청서를 작성해 와서 승인을 받도록 하십시요.

질문9] 아날로그 회로를 설계하고 싶습니다.

30일에 열리는 세미나에서 행할 MPW 제작 지원의 설명과 접수는 디지털 회로에 한 합니다. 아날로그 회로의 경우 이종욱 교수님께 문의 하십시요.

추가 문의는 아래 e-mail을 통하십시요.

국일호 (goodkook@khu.ac.kr)


[주간 세미나 공지] "내 칩(My Chip)" MPW 신청자 최종 모집 (2023년 8월 30일)

[주간 세미나 공지] "내 칩(My Chip)" MPW 신청자 최종 모집 (2023년 8월 30일)

날자: 2023년 8월 30일
장소: 전자정보 대학관 211-2호
내용:

2023년 1차 "내 칩(My Chip)" MPW의 신청 마감일이 8월 31일로 다가옴에 따라 신청 내용과 신청서 작성을 설명 합니다. MPW에 참여하고자 하는 학생은 이번 세미나에 꼭 참석해서 신청서 작성을 마쳐야 마감일 전에 접수 할 수 있습니다.

이번 MPW에 신청 예정인 설계는 총  6개의 설계 입니다.

1. CMOS 공정의 디지털 회로 합성용 표준 셀 라이브러리
2. 바렐 쉬프터 Signed-Digit 곱셈 및 누산기(Multiplier-Accumulator) 설계
3. 8-bit CPU의 범용 산술논리 연산장치(ALU) 설계
4. 부스 알고리즘 8비트 곱셈기(Booth Multiplier) 설계

5. 8비트 CPU 6502 구현
6. 8비트 CPU Z80 구현

주1]
1) 이번 MPW의 칩 크기가 1000x1000um 에 불과하여 큰 설계를 넣을 수 없습니다.
2) 따라서 위 설계 중 1~4 항목 중 하나를 선택한 학생을 모아 팀을 만들어 신청 합니다.
3) 설계 5, 6은 공정 단계에서 큰 설계가 반영될 경우를 대비해 신청하려는 것입니다. 둘 중 하나를 선택 하십시요.
4) 중복 선택 가능하며 수요일 세미나 시간에 조정 하도록 합니다.
5) 위의 설계 이외에 다른 설계를 원할 경우 준비해오면 논의하여 접수토록 합니다.

주2] 신청 접수할 개별 설계마다 참여할 구성원은 모두 각자(또는 협력으로) 해당 내용으로 설계하고 가장 우수한(DRC 문제가 없고 시뮬레이션 결과가 적절히 이뤄진) 설계물을 제출 할 것입니다.

주3] 신청한 설계가 모두 선정 된다는 보장은 없습니다(접수 건수에 따라 변경 됨). 향후 MPW 는 매월 계속 될 예정이라고 하니 다음 차수를 위해 준비 되도록 설계를 진행 합니다.

주4] MPW 참여는 "심화학습"의 신청 학점과 무관 합니다. "심화학습" 학점 신청자들은 신청한 내용대로 학습을 진행 하십시요.


2023년 8월 21일 월요일

[반도체 전공 트랙의 주간강좌와 세미나는 열린 공간입니다]

[반도체 전공 트랙의 주간강좌와 세미나는 열린 공간입니다]

1. 주간 강좌와 세미나는 학점 교과목이 아닙니다.
2. 반도체 설계에 관심이 있다면 누구나 참여할 수 있습니다.
3. 강좌와 세미나 시간 불참에 미안해 할 이유가 없습니다.
4. 학습 및 실습 사항은 게시판에 계속 공지될 것입니다. 자율적으로 참여 하십시요.
5. 실습 중 어려움이 있거나 궁금한 점은 언제든 문의 하십시요.

6. 주간강좌 및 세미나 계획(안) 참조 하십시요. [링크]

추가] '자율'이란 학습목표의 선택과 진도도 스스로 정할 수 있다는 뜻입니다. 성공적인 자율 학습에 대해 생각해 봅시다.

    개방형 온-라인 대중 교육(MOOC)에서 성공 하는 법 [링크]


2023년 8월 18일 금요일

[주간 세미나/강좌 공지] "Verilog RTL 에서 레이아웃 GDS 까지" (2023년 8월 24일)

[주간 세미나/강좌 공지] "Verilog RTL 에서 레이아웃 GDS 까지" (2023년 8월 24일)

[주1] 8월 23일(수)로 예정된 강좌는 MPW 관련 공정측과 회의가 예정되어 있어서 24일(목)로  변경 합니다. 장소와 시간은 추후 변경 될 수 있음.
[주2] 매주 수요일에 실시하던 주간 세미나/강좌는 9월 부터 일정이 변경될 예정 입니다.

[주간 강좌/세미나]
일시: 8월 24일
시간: 오전 10시 30분
장소: (추후공지)

내용:

    - "Verilog RTL 에서 레이아웃 GDS 까지"
        표준 셀 기반 디지털 반도체 회로 설계의 후반 부 자동화 도구 리뷰

    - 아래 내용을 자가실습하고 세미나/강좌 시간에 토론 합시다.

SystemC 및 SDL2 라이브러리 빌드 하는 방법

Project_6502 예제의 SystemC 테스트 환경 빌드 및 실행하기

Project_6502 예제의 기능적 Co-Simulation 실시 방법

Project_6502 예제의 합성 후 Co-Simulation 실시 방법