내칩 강의 첫째주에 할일은 설계도구의 설치 입니다. 도구 없이 설계를 할 수는 없는 노릇입니다. 아래 링크의 글에 따라 반드시 설계 도구 갖추기 바랍니다.
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
https://youtu.be/I2QE1VFlSkQ?si=7uBHqVOxQ45SAdNT
-----------------------------------------------------------------------------------
댓글 없음:
댓글 쓰기