2026년 9월 13일 일요일

[내칩강의2026] 1-3. 남의 칩 부터...

[내칩강의2026] 1-3. 남의 칩 부터...

오픈소스 반도체 설계도구의 설치가 되었습니까? 앞선 게시글에 따라 무사히(?) 설치하고 예제를 수행하는데 문제 없었다는 한 수강생(전기전자학부 3학년)의 답장을 받았습니다. 기계공학, 화학공학, 산업공학 등 다양한 전공의 수강생이 있는 줄 앎니다. 이공계 외에 인문,상경계 전공자들도 있을지 모르겠습니다. 이를 감안하여 강의를 평범하게(상식에 기대어...[링크]) 진행하려고 합니다. 여러분의 설치 현황은 어떻습니까?

"설계"는 기계에서 수행되길 바라는 나의 의도(아이디어)를 기술하는 것에서 시작 합니다. 우리의 목표가 이 '아이디어'를 반도체로 제조하는 것이므로 하드웨어를 기술할 전용의 언어로 기술해야 합니다. 하지만 이 전용의 언어에 익숙치 않으니 그나마 수월한 소프트웨어 언어로 기술하고 이를 상용 마이크로컨트롤러 보드에서 실행 시켜 보기로 합니다. 내 칩"을 만들기 전에 먼저 남의 칩을 활용하여 나의 '알고리즘'을 검증하려는 것입니다. 아울러 상용 반도체의 활용법도 익히도록 합니다. 나중에 내 칩이 나왔을 때 이를 시험하고 응용보드(내 칩 게임기!)를 제작할 요량입니다.

먼저 구현할 알고리즘을 C++ 언어로 기술하고 남의 칩에 맞는 바이너리를 생성(컴파일)하여 적제(업로드, upload)하는 도구가 있습니다. '아듀이노(Arduino)' 입니다. 아듀이노는 8비트 마이크로컨트롤러 보드로 시작 했지만 지금은 다양한 CPU(ESP32, ARM, RISC-V 등)와 다양한 개발 보드를 모두 아우르는 개발 플랫폼으로 발전 하였습니다. 수많은 개발자들이 참여하여 이루 헤아릴 수 없는 라이브러리들을 손쉽게 사용할 수 있습니다. 커뮤니티 또한 매우 활발하여 입문자도 어려움을 쉽게 해결 할 수 있습니다. 아두이노는 GUI는 물론 CLI 도 지원 합니다. 리눅스에 설치 방법은 아래 링크의 글에서 'Arduino' 부분을 참고 하십시요.


워낙 널리 사용되고 있고 GUI 환경은 직관적이라 굳이 사용법을 강의에서 다뤄야 할 필요를 느끼지 못합니다. 그래도 어려움이 있다면 서로 질문하고 토론하여 답을 얻으시기 바랍니다. 도구의 사용법이 아니라 '무엇을 할것인가?' 입니다. 우리가 만들려고 하는 '탁구 게임기'를 남의 칩, 8비트 AVR 프로세서에 구현해 보기로 합니다. 소스 코드는 아래와 같습니다.


깃허브 저장소에서 오픈소스 디자인 킷의 예제에 포함되어 있습니다. 디자인 킷은 수시로 갱신되고 있습니다. 아래의 명령으로 새 파일을 내려 받도록 하십시요.

    $ cd ~/ETRI050_DesignKit
    $ git pull

요즘 깃허브 저장소가 불안 하다는 말이 왕왕 나옵니다. git pull 이 제대로 작동하지 않으면 이전에 받았던 파일들을 모두 제거하고 다시 모두 내려받는 편이 속시원 합니다. 용량이 거의 2기가 가량으로 증가 했으니 시간이 조금 걸릴지도 모릅니다.

    $ rm -rf ETRI-0.5um-CMOS-MPW-Std-Cell-DK
    $ git clone https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK.git

아래 링크에 남의 칩에서 작동하는 '탁구 게임기'를 설명하였습니다. C++라는 언어가 생소 하더라도 등장하는 단어를 보며 따라가 보도록 하십시요. 겨우 중등 영어 수준의 단어와 그동안 쌓은 눈치밥을 동원 하십시오. 상식에 기대어....!!!!!

    "남의 칩"으로 탁구 게임기

인공지능에게 이 소스코드를 분석해 달라고 하는 것도 좋습니다.

    "남의 칩"으로 구현한 탁구 게임 소스코드를 인공지능에게 분석해 달라고 해봤습니다.

첫째주 대면 수강생들에게 간단한 마이크로넠트롤러 보드를 나눠드렸습니다. "남의 칩"으로 탁구 게임기를 빌드(컴파일)하여 보드에서 실행해 보도록 하십시요. 그리고 위 링크의 게시글 끝 부분에 제시한 토론과제를 수행 하십시요. 실험 보고서가 아닌 '에세이'로 작성하셔야 합니다.

처음 나눠드린 보드에 적재된 펌웨어는 '미니 오실로스코프'입니다. 이 소스코드 역시 디자인 킷 예제에 포함되어 있습니다. 간단한 기능에 대역폭도 아주 좁긴 하지만 응용 프로그램을 개발할 대 유용하게 사용할 수 있습니다. '미니 오실로스코프'의 소스코드 설명은 아래 링크를 참조 하십시오.

    [소스코드 해설] 미니 오실로스코프

소스코드를 읽고 이해하는 것도 중요하지만 경험을 필요로 합니다. 해설글의 내용 중 측정의 기본 원리를 살짝 언급 했습니다. 특히 저항을 이용한 분압기(voltage divider)와 아날로그 신호를 디지털로 바꾸기(Analog-to-Digital Converter)를 눈여겨 보시기 바랍니다. 그리고 아날로그와 디지털을 나름대로 한두 문장으로 설명할 준비를 하십시오.

과제를 수행하자니 첫주부터 조금 머리가 아풀지도 모릅니다. 이정도에서 지쳐 흥미를 잃는다면 냉정히 말해서 수강을 마치시기 바랍니다. 세상은 넓고 할일은 많습니다. 다른 산업분야가 그랬던 것처럼 반도체도 한때 유행일지도 모릅니다.

[내칩강의2026] 1-2. 상식에 기대어 보자.

[내칩강의2026] 1-2. 상식에 기대어 보자.

내칩 강의 첫째주에 할일은 설계도구의 설치 입니다. 도구 없이 설계를 할 수는 없는 노릇입니다. 아래 링크의 글에 따라 반드시 설계 도구 갖추기 바랍니다.

    https://groups.google.com/g/mychip-on-mydesk/c/siWyusw9lgQ

현대 산업의 "총아"는 반도체 입니다. 오늘을 살아가는 모든 이가 관심을 가지고 있고 삶에 영향을 끼치고 있습니다. "반도체"에는 개인마다 여러 의미가 있겠지만 우리는 반도체에 기능을 부여하여 뭔가 목적하는 바를 수행 토록 하는 "설계"가 궁금하여 알아보려고 이 수업을 개설하고 듣습니다. 어떻게 설계하는지 궁금증을 풀어보기 전에 먼저 목적, 즉 무슨 기능을 수행할 것인지 생각해 보길 바랍니다.

반도체가 현대 산업사회를 지배하는 만큼 그 설계를 위해 필요한 지식의 폭은 매우 넓습니다. 전기를 이용하여 반도체 라는 물질을 제어하므로 전자회로를 알아야 겠고 디지털 세상에는 정보를 참과 거짓(또는 1과 0)이라고 하는 논리와 2진수 체계로 표현 한다고 합니다. 컴퓨터에게 뭔가 일을 시키기 위해 프로그래밍(코딩)을 해주어야 한다고 합니다. 우리는 이 단어들에 매우 익숙하여 거부감도 없을 뿐만 아니라 신기하지도 않습니다. 하지만 구체적으로 디지털 반도체를 설계를 하려니 이에 필요한 지식들을 하나하나 따져보면 너무나 방대합니다. 깊이는 따지지 맙시다. 이미 고등학교와 대학의 여러 학과목에서 배울만큼 배웠으니 그때 익힌 상식에 기대어 반도체 설계를 시작해 봅시다.

"설계"는 목적을 묘사하는 것입니다. 목적에 다다르는 절차를 기술하는 것입니다. 다다르는 방법을 "알고리즘" 이라고 합니다. 여러가지 방법 중 주어진 자원(비용, 시간, 컴퓨터 용량, 성능, 도구 등)을 감안하여 하나를 선택합니다. 소위 "견적"을 냅니다. 적절한 "견적"에서 성패가 좌우되므로 많은 경험을 가진 이가 판단을 할텐데 그를 "아키텍트(Architect)"라고 합니다. 이제 막 반도체 설계를 시작하려는 위치에 있는 우리는 그저 "코더(coder)" 이지만 경험을 쌓아 "디자이너(designer)" 가 되고 마침내"아키텍트"의 반열에 오르길 기대합니다.

반도체 설계 "도구"는 컴파일러라고 하는 소프트웨어 개발 도구와 다르지 않습니다. 컴파일러의 최종 산물은 이미 구성된 하드웨어(컴퓨터)에서 실행될 바이너리 파일 입니다. 반도체 설계는 하드웨어를 만들고자 합니다. 반도체 설계 도구의 최종 산물은 제조 도면 입니다. 그래서 도구의 이름을 조금 바꿨습니다. "합성기(synthesizer)" 라고 합니다.

반도체 설계 도구가 내놓는 제조도면을 레이아웃(layout)이라고 합니다. 건축 평면도와 다르지 않습니다. 건축 도면에는 방의 구획, 용도별(거실, 침실, 화장실, 부엌등) 시설물, 가구의 배치, 복층 건축물 이라면 각층마다 오르내리는 계단의 위치들을 평면에 그립니다. 반도체 제조 도면은 구획하고 시설물을 배치하는데 그 시설물들이 트랜지스터라는 전자제어 부품(소자)과 연결(배선)이라는 점이 다릅니다. 그리고 시설물의 갯수가 많습니다. 많아도 너무 많습니다. 요즘은 트랜지스터 "수십억개"를 집적했다는 말을 서슴없이 합니다. 우리는 이제 막 시작한 초보자 입니다. "내 칩 제작 서비스"를 통해 제작할 수 있는 회로의 규모는 트랜지스터 약 "만여개" 가량 입니다.

처음 생각해 두자고 했던 질문을 다시 꺼내 봅시다. 고작 "만여개"의 트랜지스터를 집적한 칩을 제조해 준다고 하는데 "뭐하는 칩"을 만들까요. 당장 떠오르는 "아이디어"가 없어서 이 수업에서는 "비디오 게임기"를 하드웨어로 설계하고 제작하여 나중에 칩이 나오면 "내 칩 게임기"까지 제작해 보려고 합니다. 요즘은 재주꾼들이 많아서 오락실에서 봄직한 멋진 게임기를 만들어 자랑질이 넘칩니다. 알고리즘을 기반으로 설계하기 보다 대부분 오래된 상용 게임기(겜보이, 닌텐도 등)를 복제하는 수준 입니다. 이번 수업에서 목표하는 게임기는 비록 단순한 화면이지만 알고리즘을 분석하고 이를 하드웨어 언어로 묘사하여 "세상에서 하나뿐"인 내칩을 설계하는 것입니다.

설계는 알고리즘의 "묘사" 입니다. 설계 도구(합성기라고 했던 응용 소프트웨어)가 알아듣는 언어로 내 의도롤 기술합니다. 소프트웨어를 제작할 때 사용했던 언어를 기억 합니까? C, C++, Python 등등. 하드웨어를 대상으로 하는 언어는 Vrilog(베릴로그), VHDL 이 대표적입니다. 모두 컴퓨팅 언어 입니다. 함수(또는 하위 모듈)을 기술하는 몇가지 문법이 다소 상이할 뿐 함수 내에서 사용하는 기본 단어는 동일 합니다. 그 단어(키워드)들은 if~else, while, for 등 굳이 단어를 익힐 필요조차 없는 초급 영어 수준입니다. 여기에 덧붙여 논리식과 대수 입니다. 논리식(logics)은 말그대로 참과 거짓을 다루고 대수(arithmetics)는 덧셈, 곱셈을 동원한 계산 값(량)을 다룹니다. 이 역시 초중등 산수에 불과 합니다. 앞서 "상식"에 기대어 보자는 말은 이정도 "선수지식" 만 으로도 반도체 설계를 시작 할 수 있다는 의미입니다. 믿으세요. 그대신 생각을 하고 추론하십시오. 살아오면서 상식이 편견으로 굳어졌다면 추론이 쉽지 않을 겁니다. 반도체 설계의 궁금증이 아직 남아 있다면 억지로 이해하려고 하지 말고 받아들이는 것도 방법 입니다. 이제 그 궁금증을 가지고 아래에서 제시한 두개의 문서를 읽어 보도록 하십시오. 우리는 전기로 작동하는 하드웨어를 묘사한다는 점을 꼭 기억하면서 말입니다.

    ETRI-0.5um-CMOS-MPW-Std-Cell-DK/docs/ETRI_연구노트/연구노트3_하드웨어_기술_언어_코딩_스타일.pdf
    ETRI-0.5um-CMOS-MPW-Std-Cell-DK/docs/ETRI_연구노트/연구노트4_Cpp_크래스_SystemC_최소한이해.pdf

------------------------------------------------------------------------
새로운 분야에 들어서면 소위 전문용어(jargon)들이 입문자를 괴롭힙니다. 이해가 어렵다면 AI를 활용하십시오. 충분히 이해될 때까지 계속해서 질문하십시오. 그리고 동료들과 토론하여 자신의 문장을 만들기 바랍니다. 자연언어가 되었든 컴퓨팅 언어가 되었든 "표현"이 곧 설계 입니다.
------------------------------------------------------------------------
재주꾼들의 게임기 복제:
I Build a Working NES Emulator with ESP32-S3! (Step-by-Step)

https://youtu.be/wruJ-BESnX8?si=GqoOCi9rABh33wjN


내 칩 게임기:
https://youtu.be/I2QE1VFlSkQ?si=7uBHqVOxQ45SAdNT
-----------------------------------------------------------------------------------

[내칩강의2026] 1-1. 리눅스와 오픈소스 설계 도구 설치

[내칩강의2026] 1-1. 리눅스와 오픈소스 설계 도구 설치

"오픈소스 도구 활용 내 칩 설계 및 제작[안내링크]" 강의는 자가 실습을 강조합니다. 모든 수강생(온/오프)들은 반드시(꼭!) 자신의 컴퓨터에 오픈소스 반도체 설계 도구를 설치해야 합니다. 아래 내용을 먼저 잘 읽어보고 이해되었다고 판단하면 자신의 상황에 맞는 설치 방법을 따르십시오.

1. 리눅스 운영체제 설치

1-1. 윈도우즈11의 WSL 가상머신으로 리눅스 설치

반도체 설계 툴들은 리눅스의 명령줄 환경에서 실행됩니다. 윈도우즈 11에서 제공하는 WSL에서 가상으로 리눅스를 운영할 수 있습니다. 설치는 아래 링크를 따르십시요.

    기술노트14: WSL2 다시!
    https://fun-teaching-goodkook.blogspot.com/2025/08/14-wsl2.html

1-2. 전용 리눅스 머신

WSL의 가상환경이 아닌 윈도우즈 없이 전용 컴퓨터에 리눅스 설치하는 경우 아래 링크를 따르십시오.

    Ubuntu 24.04: Fresh Install for MyChip-on-MyDesk
    https://fun-teaching-goodkook.blogspot.com/2026/07/ubuntu-2404-fresh-install-for-my-chip.html

2. 오픈소스 반도체 설계 툴 설치

2-1. 리눅스 운영 체제가 준비되었으면 오픈-소스 툴들을 설치해야 합니다. 오픈-소스는 말그대로 소스코드(C++와 TCL/TK, Python 등)로 배포됩니다. 사용자가 각자의 환경에 맞게 소스 코드를 받아서 빌드 해야 합니다. 리눅스 운영체제에서 오픈 소스 설계 툴을 설치하는 방법은 아래 링크를 따르십시요.

    ETRI 0.5um CMOS Std-Cell DK: 오픈-소스 반도체 설계 도구 설치
    https://fun-teaching-goodkook.blogspot.com/2025/06/etri-05um-cmos-std-cell-dk.html

2-2. 오픈 소스 반도체 설계 툴들을 설치하는데 상상한 시간이 걸립니다. 사용자 그룹 에서 필요한 툴 들을 미리 설치한 리눅스 이미지를 배포하므로 이를 활용 할 수도 있습니다.

    오픈-소스 설계 툴이 사전 설치된 WSL 가상 디스크 이미지 배포 및 사용법
    https://fun-teaching-goodkook.blogspot.com/2025/12/20-wsl.html

-------------------------------------------------------------------
수강생들 대부분 리눅스 운영체제(Linux OS:Operating System)가 처음일 겁니다. 사실 휴대 기기의 운영체제 안드로이드 역시 리눅스를 기반으로 보안과 GUI를 강화한 것입니다. 아마도 리눅스가 생소하게 받아들이는 이유는,

첫째, 운영체제의 가장 기본인 파일 시스템(디스크 드라이브 관리체제/디렉토리 구조, 주변장치 관치 체제를 모두 일컬어)이 달라서 일 겁니다. 아래의 동영상은 리눅스의 파일 시스템을 간략히 설명 합니다.

LINUX isn't Hard Once You Understand This (File Directories)
https://youtu.be/qvjRcZcW8CY?si=9zd8yFU0zjlGEpfW

둘째, GUI에 익숙해서 명령줄이 불편하게 느껴질 수 있습니다. 현대적인 컴퓨터 운영체제는 그래픽 사용자 인터페이스(GUI:Graphic User Interface)를 채택하고 있습니다. 리눅스 역시 GUI 기반의 운영환경을 제공 합니다. 하지만 개발 도구들(특히 하드웨어)은 대부분 명령줄(CLI:Command Line Interface) 환경에서 작동됩니다. 어쩌면 불편해 보일 수 있으나 그만한 이유가 있습니다. 아래 링크의 글을 읽어보십시오.

"반도체 설계 도구들은 왜 '불편한' 명령줄(Command-Line Interface)에서 실행하나요?"
https://fun-teaching-goodkook.blogspot.com/2026/01/command-line-interface.html

리눅스의 명령들을 굉장히 만은듣 보이지만 사실 주로 사용하는 것들은 몇 되지 않습니다. 유튜브에서 "리눅스 터미널 명령어"를 검색하면 수많은 동영상이 검색 되는 대부분 그냥 명령어 나열식이라 피곤 합니다. 그중 간편한 것을 찾았습니다. (제목장사 주의: 제목 처럼 1시간에 끝낼 수 없음!)

1시간에 끝내는 Linux 기본 명령어
https://www.youtube.com/playlist?list=PL8oUjFBfGVJxH_oJkYfRwSqM9Q5Fy5C1X

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

[내칩강의2026] 안내. 오픈소스 도구 활용 내 칩 설계 및 제작

[내칩강의2026] 안내. 오픈소스 도구 활용 내 칩 설계 및 제작

"내 칩(My Chip) 제작 서비스" 2026년 4차 지원을 목표로 온/오프 강의를 실시 합니다. 이 강의는 모두에게 열려 있습니다. 오프 라인 강의는 서울대학교에서 진행되며 온-라인 강의는 "내 칩 제작 서비스"/"반도체 설계 교실" 오픈-소스 디자인 킷 사용자 그룹을 통해 게시됩니다. 매주 게시되는 수업을 학습하고 질문과 토론은 "칩 인앤아웃" 카페의 게시판 활용하시기 바랍니다.

내 칩 사용자 그룹: https://groups.google.com/g/mychip-on-mydesk
칩 인앤아웃 카페: https://cafe.naver.com/mychipinout
내 칩 제작 서비스: https://moafab.kr/css/myPage/bussiness/myChip/info
오프라인 강의 안내: https://groups.google.com/g/mychip-on-mydesk/c/c6kbJNYihxY

매년 개최되는 대한전자공학회 추계 학술대회와 함께 개최되는 "MyChip 경진 대회"에 출품하여 입상에 도전해 보십시오. 작년 1회 디지털 설계부분 대상자 지하은 군이 AER 팀의 일원으로 국제 FPL 컨퍼런스의 Agentic FPGA Backend Competition에서 1등을 했습니다. "내 칩 제작 서비스"를 통해 칩을 설계하고 제작했던 경험이 큰 힘이 되었다고 합니다.

제2회 MyChip 경진대회: https://conf.theieie.org/2026f/pages/mychip_competition.vm
Agentic FPGA Backend Competition: https://xilinx.github.io/fpl26_optimization_contest/