레이블이 주간 강좌인 게시물을 표시합니다. 모든 게시물 표시
레이블이 주간 강좌인 게시물을 표시합니다. 모든 게시물 표시

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









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년 11월 29일 수요일

[주간강좌] 심화학습 학점 신청 결과물 제출 공지

[주간강좌] 심화학습 학점 신청 결과물 제출 공지

2023년 2학기를 마감 합니다. 심화학습을 신청한 학생들은 아래 기준에 맞춰 학습 결과물을 제출 하여야 합니다.

  1. 학습 결과 에세이 작성(10 포인트 문자/그림 제외 문자 분량으로 A4 지 5쪽 이상)
  2. 학습을 수행한 과정을 기승전결로 기술 할 것
  3. 목표 수준과 실제 성취 수준의 차이/목표치에 이르지 못한 경우 그 이유를 도입부에 기술 할 것
  4. 설계 과정에서 사용한 도구와 그 도구의 용도, 알게 된 내, 용어 정의 등을 본문에 기술 할 것
  5. 기존에 알고 있던 (또는 예상했던) 것들과 실제 수행하며 얻은 내용과 차이점/동일한 점 들을 결론 부분에 기술 할 것
  6. 학습 결과물로서 DB  제출 보고서를 MPW 신청서와 함께 첨부 할 것
  7. 향후 칩 제작이 완료될 것을 대비하여 테스트 전략을 수립 할 것
  8. 제출 마감일: 2023년 12월 5일 (12월 1일 금요일 주간 강좌는 따로 열리지 않습니다.)

* ETRI050 STD-CELL Design Kit v.1 다운로드 [링크]

* 반도체 설계 오픈 소스 도구들

  1. Design Flow: QFlow 1.4.100+ETRI050 [Download]
  2. RTL Synthesizer: OSS-CAD-SUITE-20231010 (Yosys, iverilog, etc.) [Download]
  3. Auto-Placement: GrayWolf-2.1 [Download]
  4. Auto-Router: Qrouter 1.4.86 [Download]
  5. Layout: Magic-8.3.424 [Download]
  6. Switch-Level Simulator: IRSIM-9.7.117 [Download]
  7. LVS: Netgen-1.5.255 [Download]
  8. Schematic: XSchem 3.4.5 [Download]
  9. Waveform Viewer: GAW [Download]
  10. SPICE: NGSpice-41 [Download]
  11. 설치 스크립트 [링크]

* 참조: QFlow Command-Line 실습 [링크]


2023년 10월 8일 일요일

[주간강좌] 고위합성(HLS)의 기술 동향 및 개요

[주간강좌] 고위합성(HLS)의 기술 동향 및 개요 

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

내용:

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

- 고위합성 튜토리얼
    https://hls-goodkook.blogspot.com/2021/08/ug871-xilinx-high-level-synthesis.html

- MPW 관련 리뷰

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

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

    osu050의 모든 STD-CELL 에 대하여,
    1. Magic 파일 추출 후 GDS 저장
    2. ETRI의 Cadence/Virtuoso 레이아웃에서 DRC 수행
    3. DRC 실시후 Rule Violation 에 대한 대책 마련(계획안)


2023년 9월 23일 토요일

[주간강좌] 고위합성(HLS) 도구의 기술 동향

[주간강좌] 고위합성(HLS) 도구의 기술 동향

날자: 2023년 9월 26일
시간: 오후 6시
장소: 226호

내용: 최신 반도체 설계 기법

[1] Towards Automatic High-Level Code Deployment on Reconfigurable Platforms: A Survey of High-Level Synthesis Tools and Toolchains [Link]
높은 추상화 수준의 합성도구의 경향

[2] 시스템수준 언어: SystemC & SystemVerilog [Link]
- 시스템 수준 이란?

[3] SystemC Bridges the Gap [Link]
- 'the Gap'의 의미는?

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

[과제] 오픈 소스 레이아웃 툴 Magic 과 Cadence/Virtuoso 사이의 레이아웃 파일 호환성 실습

1. Magic의 기술 메뉴얼을 참조하여 ETRI의 테크-룰 중 레이어 번호를 Magic의 테크파일, osu050 과 호환되도록 수정할 것

2. Magic에서 생성된 셀 라이브러리를 GDS로 저장 후 Virtuoso 에서 읽을 것

3. ETRI 에서 제공된 IO-PAD 셀 라이브러리의 Virtuoso의 oa를 GDS stream 으로 저장 후 Magic 에서 읽을 것

* Magic 메뉴얼 [Download]

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




[주간세미나] ETRI 내칩(My Chip) MPW 선정/PDK 안내

[주간세미나] ETRI 내칩(My Chip) MPW 선정/PDK 안내

날자: 2023년 9월 19일
시간: 오후 6시~
장소: 226호

내용:
- ETRI 내칩(My Chip) MPW 선정과 함께 PDK 가 배포 되었음
- PDK의 설명과 향후 설계 절차에 대한 논의
- 선정된 설계팀은 필히 참석 할 것

ETRI 0.5u CMOS PDK Download


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월 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 실시 방법

2023년 8월 15일 화요일

[주간 세미나/강좌 공지] 오픈 소스 표준 셀 기반 설계(2) (2023년 8월 16일)

[주간 세미나/강좌 공지] 오픈 소스 표준 셀 기반 설계(2) (2023년 8월 16일)

[주간 강좌]
일시: 8월 16일
시간: 오전 10시 30분
장소: 전자정보대학관 211-2

내용:

    - 6502 RTL+SystemC/C++ Co-Simulation (실행 데모)
    - Pre- & Post-Simulation/SDF
    - 시뮬레이션은 QuestaSim을 사용 할 것임.
    - 아래 예제 파일을 개인 컴퓨터에 담아와서 수업 중 실습 및 질의응답

[예제파일 다운로드]
SDL2 라이브러리
SystemC 라이브러리

[주간 세미나]

일시: 8월 16일
시간: 오후1시
장소: 전자정보대학관 211-2

내용:
    - 독립심화학습 및 "MyChip 제작 서비스" 참여자 확인 팀 구성(CMOS 디지털 회로 부분)
    - 오픈소스 툴 플로우 OpenRoad 소개
    - 메모리 컴파일러 툴 소개


2023년 8월 9일 수요일

[주간 세미나/강좌 공지] 오픈 소스 표준 셀 기반 설계 (2023년 8월 10일)

[주간 세미나/강좌 공지] 오픈 소스 표준 셀 기반 설계 (2023년 8월 10일)

[주1] 8월 9일로 예정했던 주간 세미나/강좌가 수강신청 일자와 겹쳐, 변경요청이 있어서 10일로 변경 되었습니다.
[주2] 8월중 [주간 세미나]와 [주간 강좌]는 "내칩(My Chip) 제작 서비스"의 참여와 관련하여 반도체 설계용 툴 사용법과 Co-Simulation을 중점적으로 다룹니다.
[주3] 이번 세미나는 "내칩(My Chip) 제작 서비스"의 참가 신청일자가 촉박하여 앞서 공지된 내용에서 변경 되었으니 아래 내용을 참고 하십시요. 설계팀 구성과 신청서 작성을 위한 세미나 이므로 참여 신청코자 하는 학생은 반드시 참석 하십시요.
[주4] 공교롭게도 8월 10일 강력한 태풍이 중부지방을 지난다고 합니다. 일기가 불순할 경우 세미나/강좌가 변경 될 수 있으니 클래스 룸 공지를 반드시 확인 하십시요. 당일 오전 7시 30분까지 별도 공지가 없을 시 예정대로 진행 합니다.

[주간 세미나]

일시: 8월 10일
시간: 오전 10시 30분
장소: 전자정보대학관 211-2

내용:

    - "내칩(My Chip) 제작 서비스"에 CMOS 디지털 회로 부분 설명 및 참여자 확인 팀 구성
    - 오픈 소스 설계 툴 설명 (설치법)

[주간 강좌]

일시: 8월 10일
시간: 오후1시
장소: 전자정보대학관 211-2

내용:

    - 6502 RTL+SystemC/C++ Co-Simulation (실행 데모)
    - QFlow Project: 6502 CPU
        1. 6502 CPU RTL 설명
        2. 6502 CPU RTL의 문제점 및 수정
        3. Co-Simulation Test Bench 구성
        4. 1차 수정: RTL QFlow 시도 (툴 에러 분석)
        5. 2차 수정: Placement  옵션 및 Routing 결과 분석
        6. 3차 수정: RTL 의 모듈화의 중요성
        7. 향후 과제 (My Chip MPW 팀 별 역활 분담)

[예제: Project_6502 다운로드]

2023년 8월 2일 수요일

[8월 9일 주간 세미나/주간 강좌]

[8월 9일 주간 세미나/주간 강좌]

8월 중 [주간 세미나]와 [주간 강좌]는 연계해서 열립니다. 반도체 설계용 툴 사용법과 Co-Simulation을 중점적으로 다룹니다.

[주간 세미나]

일시: 8월 9일
시간: 오전 10시 30분
장소: 전자정보대학관 211-2
내용:
        - HDL Simulator "QuestaSim" 소개 및 사용법
        - "내칩(My Chip) MPW 제작" 지원 독려/지원서 접수 안내

[주간 강좌]

일시: 8월 9일
시간: 오후1시
내용: Z80 RTL+SystemC/C++ Co-Simulation
        - Z80 8-Bit Microprocessor RTL
        - SystemC 테스트벤치
        - Windows PIPE Inter-Process Communication
장소: 전자정보대학관 211-2
내용



2023년 7월 20일 목요일

[주간 강좌] 병행 시뮬레이션(Co-Simulation) (2023-07-26)

[주간 강좌] 병행 시뮬레이션(Co-Simulation)

일시: 2023년 7월 26일
장소: 전자정보대학관 211-2
시간: 오전 10시 30분 (90분)

내용

1. 병행 시뮬레이션(Co-Simulation)의 필요성

  • 추상화 수준(abstraction level)의 혼재
    - 언어의 차이
    - 구체성의 차이
  • Gajski-Kuhn Y-chart [그림출처: 1 , 2]
    3-Domains: Behavioral / Structural / Physical
  • Transition tools between Domains and Abstraction Levels
    - Refinement & Abstraction
    - Generation & Extraction
    - Synthesis & Analysis
    - Optimization
  • Concerns in each abstraction level
    - Architecture: IP availability, Needs on the market
    - Functionality & Algorithm
    - Number of Clocks & Data-path bit-width
    - Clock skew & violation
    - Die size & Power consumption
    - Clock & Thermal distribution
    - Test automation

  • Design Flow
    Lowering Abstraction Level

2. 추상화 수준이 혼재될 수 밖에 없는 이유

  • Design Under Test: Register-Transfer Level
  • Test Environment: Transaction Level
    - 실제와 근접한 테스트 입력
    - 방대한 테스트 입출력 및 검사
    - 완성되지 않은 DUT
    - 테스트 환경 구축
3. 예제: SR-FlipFlop의 행위 모델 [예제 다운로드]

  • HDL 모델을 시험하는 3가지 방법
    - 대화창 명령
    - HDL 테스트 벤치
    - 상위수준 언어사용
  • SystemC/C++ 로 하드웨어 기술 예
  • 도구 사용법
    - QuestaSim 사용법
    - VisualStudio C++ 에서 SystemC 모델 컴파일 옵션

4. 예제: 이미지 처리 RTL 모델 [예제 다운로드]

  • 시뮬레이터의 속도
    - 트랜잭션 수준 테스트
    - 가속기 / 에뮬레이터
    - FPGA Proto-Typing

5. 예제: Apple ][ [예제 다운로드]

  • CPU 6502 in Verilog (Synthesizable RTL)
  • Memory model in SystemC/C++
  • Testbench in SystemC/C++
  • Screen App. in C++ with SDL2 multimedia library
  • PIPE (Inter-Process Communication) between SystemC & Screen App.

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

6. 결론

  • Verilog
    - 모양이 다른 컴퓨팅 언어 중 하나
  • SystemC/C++
    - 시스템 수준 모델링 도구
  • 추상화 수준이 혼재된 SoC 설계에서 병행 시뮬레이션(co-simulation)은 필수 

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

[참고]

  1. AI Can't Design Chips Without People, EETimes [Link]
  2. SystemC Quick Reference Card [Link]
  3. Verilog Quick Reference Card [Link]
  4. Verilog Quick Reference Guide(2001) [Link]

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

예제1:

Module boundary:


Verilog:

module SR_ff_Behavioral(s,r,clk,reset,q,q_bar);
input s,r,clk,reset;
output q,q_bar;
......
endmodule

 SystemC(C++)

class SR_ff_Behavioral : public sc_foreign_module
{
public:
    sc_in<bool> clk;
    sc_in<sc_logic> s, r, reset;
    sc_out<sc_logic> q, q_bar;

    SR_ff_Behavioral(sc_module_name nm)  // Constructor
        : sc_foreign_module(nm, "SR_ff_Behavioral"),
    {
    }

    ~SR_ff_Behavioral()
    {}
};

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

Verilog: Event sensitize

// Verilog
always @(posedge clk)   // Clock's edge
begin
    ......
end

SystemC(C++): Even & Call-Back 

// SystemC
SC_MODULE(SR_ff)
{
    ......
    SC_CTOR(SR_ff): // Constructor
    {
        SC_METHOD(SR_ff_Method);
        sensitive << clk;
    }
};

Member function, 

void SR_ff:: SR_ff_Method ()
{
    if (clk.read())
    {
    ......
    }
}

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

Binding signals

Verilog:

wire s1, r1, q1, q1_bar;
SR_ff_Behavioral U1(.clk(clk),
                    .reset(reset),
                    .s(s1),
                    .r(r1),
                    .q(q1),
                    .q_bar(q1_bar) );

SystemC(C++):

sc_signal<sc_logic> s1, r1;
sc_signal<sc_logic> q1, q1_bar;
SR_ff* U1_SR_ff;

SC_CTOR(sc_SR_ff_TB) : ... // Constructor
{
    U1_SR_ff = new SR_ff("U1_SR_ff");
    U1_SR_ff->clk(clk);
    U1_SR_ff->reset(reset);
    U1_SR_ff->s(s1);
    U1_SR_ff->r(r1);
    U1_SR_ff->q(q1);
    U1_SR_ff->q_bar(q1_bar);
}

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

Behavior description

Verilog:

always @(posedge clk)   // Clock's edge
begin
    if (reset)  // Synchronous reset
        begin
        q = 1'b0;
        q_bar = 1'b1;
        end
    else
        begin
        case({s,r}) // Truth-Table
            {1'b0,1'b0}: begin q = q;    q_bar = q_bar; end
            {1'b0,1'b1}: begin q = 1'b0; q_bar = 1'b1; end
            {1'b1,1'b0}: begin q = 1'b1; q_bar = 1'b0; end
            {1'b1,1'b1}: begin q = 1'bx; q_bar = 1'bx; end
        endcase
    end // if~else
end // always()

SystemC(C++)

void SR_ff:: SR_ff_Method ()
{
    if (clk.read())
    {
        if (reset.read() == sc_logic('1'))
        {
            q.write(sc_logic('0'));
            q_bar.write(sc_logic('0'));
        }
        else
        {
            sc_lv<2> sr;
            sr = ((sc_lv<1>)s.read(), (sc_lv<1>)r.read());
            switch ((sc_uint<2>)sr) // Truth-Table
            {
            case 0: // s=0, r=0
                // DO NOTHING
                // q & q_bar: Keep previous values
                break;
            case 1:  // s=0, r=1
                q.write(sc_logic('0'));
                q_bar.write(sc_logic('1'));
                break;
            case 2:  // s=1, r=0
                q.write(sc_logic('1'));
                q_bar.write(sc_logic('0'));
                break;
            case 3:  // s=1, r=1
                q.write(sc_logic('x'));
                q_bar.write(sc_logic('x'));
                break;
            }
        }
    }
}

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

Blocking & Non-Blocking Assign

Co-Simulation Result

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

예제2:

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

예제3: Apple ][


2023년 7월 17일 월요일

[주간 강좌] SPICE 기초 [3/3] (2023-07-19)

[주간 강좌] SPICE 기초 [3/3] (2023-07-19)

일시: 2023년 7월 19일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 5명

내용:

1. 저항의 이해가 전자회로의 이해다.

  • 간단한 옴의 법칙 이해
    "저항체에 (직류, 교류)전류가 흐르면 양단에 걸려있던 전압이 떨어진다."

2. C 급 증폭회로 설계
  • Resonance (Q-Factor)
  • Impedance Matching (Smith Chart)
  • 고조파 발생 억제 방안
  • SPICE 시뮬레이션 및 실 회로 제작 실험

3. 시뮬레이션 명령 사용

  • 고주파 증폭회로의 효율 분석

4. 학습자료

https://fun-teaching-goodkook.blogspot.com/2023/06/spice_21.html

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

질문:

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

과제:

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

주1]  SPICE 회로 시뮬레이터의 사용법은 시뮬레이션 명령(Dot-Command & Directives)의 이해다. 3주간에 걸쳐 명령의 기초 사용법에 대해 살펴봤다. 향후 세미나 시간을 통해 SPICE를 활용한 회로 분석 기법을 소개 하겠다.

주2] SPICE는 주로 아날로그 회로, 전파(공중선 포함) 회로의 설계와 분석에 이용된다. 수많은 트랜지스터의 스위칭을 특성만을 다루는 디지털 회로 설계에는 거의 사용되지 않는다고 봐도 좋다. 모든 전자회로의 기초가 된다는 점을 꼭 기억해 두자.

주3] 디지털 회로 설계용으로는 논리회로 시뮬레이터로 HDL 시뮬레이터가 사용된다. QuestaSim 이 대표적이다. 8월중 강좌를 개설할 것이다.

주4] 설계도구의 사용법이 궁금하고 신기할지 몰라도 그저 '도구'라는 점을 잊지말자. 도구의 사용법 보다 활용할 내용을 찾아보길 바란다.

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

[주간 세미나 일정 변경 공지]

  1. 7/19일 오전에 예정 되었던 '주간 세미나'는 일정상 취소 합니다. 오후 '주간 강좌'는 예정대로 진행 됩니다.
  2. 7/26일의 오전 '주간 세미나'는 "소프트웨어 언어와 하드웨어 언어 (2023-07-26)" 편으로 예정되어 있습니다. 영상의 윤곽선 추출 알고리즘의 예제를 다룹니다. 예제의 내용이 규모가 있으므로 7/19일 오후 강좌 시간에 개요 설명이 있을 것입니다. 아울러 예정에서 취소된 '무료 반도체 설계도구들'을 소개 합니다.

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


2023년 7월 13일 목요일

[주간 강좌] SPICE 기초 [2/3] (2023-07-12)

[주간 강좌] SPICE 기초 [2/3] (2023-07-12)

일시: 2023년 7월 12일
장소: 전자정보대학관 211-2
시간: 오후 1시 (2시간)
참석인원: 8명

내용:

1. 저항의 이해가 전자회로의 이해다.

  • 간단한 옴의 법칙 이해
    "저항체에 (직류, 교류)전류가 흐르면 양단에 걸려있던 전압이 떨어진다."

2. 컨덴서와 코일이 보여주는 저항

  • Impedance: 전류의 흐름을 제한
    - Resistance: 전류제한. 교류, 직류 구분 없다.
    - Reactance: 교류에 대한 전류제한. 주파수 특성을 가진다.

3. 인덕터와 커패시터가 보여주는 주파수 특성

  • Inductive Reactance
    XL = 2πfL

  • Capacitive Reactance
    XC = 1/2πfC

4. 인덕터와 커패시터의 조합

  • R-L-C Filter
  • Resonance

5. SPICE 시뮬레이션 명령

  • .AC
  • .PARAM
  • .STEP
  • .FOUR

예제1: L-C Low-Pass / High-Pass Filter
예제2: Baxandall Tone Control

6. 학습자료

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

질문:

------------------------------------------------------------
과제:

학습 자료 내용의 실습과제 수행할 것. 특히 LC 결합 필터는 고주파 증폭 회로에 적용될 것임

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

* SPICE 기초 [3/3]은 단기 강좌의 마지막 편으로 고주파 증폭회로의 설계를 다룸

  • C 급 증폭회로 설계
    - Resonance (Q-Factor)
    - Impedance Matching (Smith Chart)
    - 고주파 증폭회로의 효율 분석
    - 고조파 발생 억제 방안
  • SPICE 시뮬레이션 및 실 회로 제작 실험