This blog is about country life of myself; raising kitchen garden, star gazing, studying math., HAM Radio, homebrewing electronics. You can visit my other blog "Teaching with Fun" about Semiconductor Design. Postings on this blog are written in Korean. Foreign visitors can read through Google's translation service. AI translation is sometimes IDIOT. ;-)
매주 두번씩 학교에 가서 반도체 설계 특강을 합니다. 정규 학점과정은 아니지만 관심을 가진 학생들에게 방과후 학습을 하는 셈이지요. 마침 산자부에서 교육목적의 칩을 제작해 준다는 공모가 있길래 학생들을 독려해 신청을 하고 공정을 해준다는 기관에 찾아가 부탁도 해서 여섯건이 선정되었습니다. 설계도면 마감까지 두달여로 빠듯하기도 해서 약간 걱정도 되었지만 도전해 보기로 했습니다[링크].
어제 저녁(2023년 9월19일) 칩 제작을 해보겠다고 신청한 학생들 십여명을 모아놓고 설명을 하던 중 품고있던 꿈이야기를 털어놓게 되었습니다. 처음 반도체 설계를 접하고 관련 공부를 하면서 설계 환경이 매우 부족하다는 것을 알고는 많이 속상했더랬습니다. 35년 전이니 그럴만도 했죠. 사회에 나와서도 반도체 설계보다 남이 만든 마이크로프로세서에 프로그램을 작성해 넣는 일을 주로 하면서 늘 아쉬웠습니다. 아쉬움이 불만으로 변해서 결국 일찌감치 하던 일을 놓게 되더군요. 틈틈이 반도체 설계 분야의 기술발전을 눈여겨 보던 중 그토록 해보고 싶었던 설계기술이 실현 되고 있다는 것을 알고는 감격스러웠습니다. 그래서 노느니 실습을 따라해 봤습니다.
그리고 꿈을 꾸게 됐죠. 때가 왔구나! 나는 아쉬워 했던 이것을 새로 시작하는 누군가에겐 동기가 되길 바랬습니다. 하지만, 쓴 글을 여기저기 퍼날라 봤지만 별 반응은 없어서 아직 이른가? 괜한 짓인가 싶었습니다. 그러던 중 대학에서 반도체 설계를 가르쳐 보겠냐는 제안을 받고 예전의 아쉬움을 다시 펼쳐보고 싶은 꿈을 꾸게 됐습니다. 이 꿈을 본격적으로 펼치기로 작심한 동기로는 고위합성(HLS)기법 이전에 기본 단계의 반도체 설계와 관련된 오픈 소스 도구들도 감히 엄두도 못내던 상용제품에는 못미친다 해도 중소규모 칩 제작에 적용될 만큼 충분히 성숙되었다는 점도 한 몫 했구요.
전에는 부실하기만 했던 시뮬레이터, 컴파일러(합성기) 같은 도구들이 실제 반도체 제작에 사용될 만큼 성숙해졌고 공개 소프트웨어로 배포되고 있습니다[링크]. 이제 반도체 설계 환경이 미비하다는 핑계는 대지 않기로 합니다. '대학교수'라는 직함이 주는 힘도 실감 했죠. 시골사는 촌부가 반도체를 만들어 달란다고 해봐야 어느 기관에서 콧방귀나 뀌려나요. 그런데 '교수님' 직함을 내밀었더니 아주 성의있게 청을 들어주더군요.
학생들에게 이 꿈을 떨어 놓으면서 내 꿈을 이룰 도구가 되어 달라고 했더니 재미있어 하길래 한껏 기분이 고양되었습니다. 학생들과 함께 반도체 설계의 초석을 놓는 꿈을 꾸기로 했습니다. 앞으로 어떤 목표에 도달 할지 모를 일입니다. 그렇다고 미리 걱정하지는 않으렵니다. 50년간 15만 명을 돌본 정신과의사가 이렇게 말했다고 합니다.
"살아보니 인생은 필연보다 우연에 좌우되었고 세상은 생각보다 불합리하고 우스꽝스러운 곳이었다"고. 그래서 "산다는 것은 슬픈 일이지만, 사소한 즐거움을 잃지 않는 한 인생은 무너지지 않는다"고. [출처]
내 꿈을 펼치게 될 기회가 '우연히' 찾아왔습니다. 그 '우연'이 찾아오길 기대하며 준비했던 것은 아니지만 하루하루 꿈을 잃지않고 되새겨 둔 덕분입니다. 오늘도 인생은 아름답습니다. 일선에서 물러나더라도 공부를 놓지 말겠다고 결심했던 글이 생각 나네요.
아마추어 무선이라는 취미를 알게되서 입문하려고 하는데 이 취미로 어떤 재미를 붙일 수 있는지 궁금해 하는 질문 이었습니다. 이에 대한 답글로 멀리 떨어진 상대와 교신하기, 새로운 통신기술의 체험, 무전기 자작, 산과 들과 바다로 나가서 이동운용 등등을 꼽더군요.
취미 활용은 각자 하기 나름이라는 말은 아마추어 무선이라고 다를건 없을 겁니다. 그런데 다른 취미들의 목적이나 대상이 사물이거나 동식물인데 아마추어 무선은 대상(상대)는 사람이라는게 이 취미를 어렵게 만드는 것 같습니다. 윗 댓글처럼 다양한 방법으로 이 취미를 즐기는데 결국은 사람과 대화잖아요. 내가 아무리 잘하려고 연구하고 노력해도 상대가 사람인지라 상대가 얄굳으면 이 취미는 그만 두고 싶어지죠. 그나마 누군가 상대해 주면 좋은데 실제 운영 무선국 수가 몇 않되는 것이 실정이라 지루하기 짝이 없어서 금방 시들해 집니다.
시들해질 때면 처음 무선통신이 재미 있다고 생각이 들었던 이유가 뭘까? 라는 생각을 해봅니다. 누군가 대화하는게 신기했다면 열심히 교신하는 것인데 상대가 없으면 나먼저 불러보는 겁니다. 모두 듣고만 있으면 대화가 되나요? 무전기는 라디오가 아니잖습니까. 그냥 멀리있는 외국사람과 통하는게 신기했다면 FT-8 같은 디지털 통신을 해보는 겁니다. 신기하게도 신통찮은 무전기와 안테나로도 멀리 태평양 넘어 대륙을 넘어 내 신호가 전달 됩니다. 이게 신기했다면 이 통신 방식을 개발한 사람은 누굴까 검색해 보는 겁니다. 노벨상을 받은 천체물리학자가 저멀리 떨어진 별에서 오는 미약한 전파를 수신하면서 얻은 이론을 바탕으로 만들었다는 군요. 그 물리학자의 취미가 아마추어 무선 이랍니다. 놀랍죠? 무전기가 신기했다면 자작 키트를 만들어 보는 겁니다. 한발 더 나가보면 전자회로 공부도 하고 싶어질 겁니다. 무선통신이 궁금해서 아마추어 무선이라는 취미에 흥미를 가지게 됐다면 분명 그러실 겁니다. 맨날 음질이니 안테나니 거기에서 머물지말고 1석 발진기로도 수십키로 떨어진 무선국과 전신교신이 가능한 무전기가 된다는 것도 알아가고 말이죠. 그러다보면 지적 만족도가 훨씬 올라갈 거라고 확신합니다. 살아가는데 경제적으로 보탬이 되기는 커녕 돈낭비가 될지도 모르지만 심리적 안정과 지적 만족이 취미의 효능이 아닐까 싶군요.
각종 매체에 '반도체'라는 말이 등장 할 때 따라붙는 접미어를 보면 크게 '물질'과 '공정' 그리고 '설계'일 겁니다. '공정'은 '몇몇 나노 공정' 이라며, 숫자가 작을 수록 최신 공정이라며 뉴스꺼리로 주목을 많이 받습니다. 그리고 반도체 '물질' 역시 큰 주목을 받는데, 탄소 반도체, 초전도 반도체 등 입니다. 역시 신물질이라며 주목을 받죠. 그런데 '설계'에 관한 기사는 드믈고 그나마 '인력양성' 또는 '시스템 반도체' 라는 기사에 잠깐 언급되는 정도 입니다.
'공정'을 제조기술이라고 한다면 '설계'는 기능의 구현기술 이라고 하겠습니다. 말하자면 '설계'는 제조와 기능 사이에 연결고리가 되는 도면을 그리는 일입니다. 해야할 일이 많아지면 그 기능들을 수행할 전자회로는 복잡해 집니다. 그저 복잡하다고 표현 하는 정도가 아니라 너무나 복잡해 집니다. 요즘 PC에 사용되는 중앙연산장치 반도체(CPU) 내부의 트랜지스터 갯수는 수십억개 라고 합니다[참조]. 굳이 말로 표현하자면 이 반도체를 제조하려면 수십억(!)개의 부품으로 구성된 도면을 그려줘야 한다는 뜻입니다. 사람이 할일이 아니죠. 할 수도 없구요. 그래서 부품들을 모두 규격화 해놓고 수많은 부품을 규칙적으로 배치하고 배선해 주는 반도체 설계 자동화 도구라는 소프트웨어를 동원 합니다.
현대적인 반도체 설계는 할 일을 문서로 작성해 주면 자동화 소프트웨어가 이를 전자회로의 도면으로 변환해 줍니다. 이는 프로그래밍 언어로 할일을 작성하고 컴파일러로 실행 파일을 만드는 소프트웨어 개발과 다를바 없습니다. 요즘은 반도체 설계도 소프트웨어 개발 처럼 컴퓨터 언어로 할일을 작성해 주면 컴파일러(합성기와 배치배선기)가 알아서 도면을 작성해 줍니다. 그렇지 않고서야 어떻게 수십억개의 트랜지스터가 들어간 반도체 제조 도면을 만들겠습니까!
지지난 달 부터 대학에 나가 반도체 설계를 가르칠 기회가 생겨서 강의록을 만들려고 자료를 찾다가 20년 전의 반도체 설계 강좌 기사를 발견하여 읽어 봤습니다. 연재글 제목도 아주 매력적 입니다.
컴퓨터 활용서나 코딩 교육 입문서에 '무작정 따라하기'가 붙은 제목은 봤어도 반도체 설계에 이런 제목이라니 매우 과감했다는 생각이 들더군요. 아마 그 시절의 시각에서 보면 어쩌면 황당했을 지도 모릅니다. 물론 적어도 전자공학을 전공하는 대학생을 염두에 둔 글이긴 하지만 따라하기에 필요한 도구(소프트웨어)들이 너무나 고가 인데다 쉽게 접근하기 어려웠기 때문 입니다. 물론 20년 전의 소프트웨어 개발 도구들(컴파일러)의 가격도 만만치 않았지만 마음만 먹으면 그럭저럭(?) 사용하는데 크게 무리는 없었지만 반도체 설계 도구들을 구하기는 매우 어려웠습니다. 도구의 희귀성으로 인해 오늘의 반도체 설계 인력 부족이라는 문제를 낳게 된 요인의 하나였을 것이라는 생각이 듭니다.
오늘 우리의 반도체 설계 여건은 20년 전에 비할 수 없이 달라졌습니다. 감히 엄두도 못내던 설계도구들이 제작사들의 관대함 덕분에 무료 라이센스가 발행되고 있습니다. 오픈 소스 소프트웨어는 소프트웨어 개발 도구 뿐만 아니라 반도체 설계도구도 예외는 아닙니다. 시뮬레이터, 컴파일러(합성기), 배치배선기, 레이아웃 편집기들은 교육용 뿐만 아니라 중소규모 반도체 설계용으로 손색이 없습니다. 이제 말그대로 '무작정 따라하기'에 장애가 없어졌습니다. 이에 덧붙여 국내 기관(ETRI 등), 대학 연구소에 설치된 실험용 공정에서 교육 목적으로 반도체 제작을 지원한다는 소식이 있으니 더욱 반갑습니다. 외국의 경우 이미 FPGA 를 사용한 반도체 설계가 취미로 자리하여 재미있는 '프로젝트' 들이 공개되는 것을 봅니다. 반도체 설계를 '무작정' 따라할 만큼 충분한 여건이 되었습니다.
한가지 덧붙이자면,
반도체와 관련된 뉴스의 화면에 방진복을 입은 작업자의 모습을 그만 봤으면 좋겠습니다. 팬데믹 사태를 격으며 힘들던 시절의 모습을 떠올리게 합니다. 청정실이라고는 하지만 마치 감옥에라도 갇혀있는 듣한 모습은 매력적이지도 않고 숨이 막힙니다. 반도체 업계는 마치 '공정'만 있는 듯이 보입니다. 허옇고 누런 색과 단조로운 기계적인 모습 대신 역동적인 화면(그래봐야 코드 리스팅이지만)과 설계자들의 자유분방한 화면을 보여주면 좋겠습니다. 적어도 시뮬레이션 화면의 파형 정도는 보여줘도 되는것 아닌가요? 소프트웨어 산업을 소개할 때처럼 남녀 설계자들의 매력적인 모습을 보여 줬으면 좋겠습니다.
20년전이나 지금이나 '반도체 설계'는 규모만 커졌지 기조는 바뀐 것이 없습니다. 여기서 말하는 '설계'는 하드웨어용 언어로 작성된 할일(알고리즘)을 디지털 회로(트랜지스터 조합)로 변환해주는 과정을 말합니다. 오늘날 이런류의 '설계자동화'는 관심을 얻지 못합니다. 당연하게 여기게 된 것입니다. 마치 소프트웨어 언어의 컴파일러 제작이 고급 기술이 아닌 평범해 진것과 같은 이유 입니다. '하드웨어 문서에서 실리콘으로' 이어주던 자동화 기술이 정점에 이른 지금은 좀더 높은 수준의 자동화에 관심을 갖게 되었습니다. '하드웨어 문서'에서 '하드웨어' 라는 말을 빼려는 것입니다. 하드웨어를 목적으로 만든 문서를 전자회로로 바꾸는 설계 자동화는 평범해진 것입니다.
인간의 언어와 가깝도록 발전한 (소프트웨어) 프로그래밍 언어는 알고리즘을 수월하게 표현할 수 있습니다. 굉장히 많은 사람들이 이 언어를 이용해 전자회로에게 일을 시키고 있죠. 프로그래밍 언어로 작성된 알고리즘을 전자회로에서 작동시키려면 컴파일러라는 도구를 사용합니다. 이 도구는 범용 계산기(CPU, GPU 같은)에서 작동될 수 있도록 일반 문서를 기계용 문서로 바꿔 주는 역활을 합니다. 문제는 이 범용 계산기의 성능(처리속도)이 인공지능이나 기계학습처럼 대규모 데이터를 다뤄야 하는 응용에 만족스럽지 않다는 것입니다. 동시다발로 생성되는 데이터를 받아들이려면 그 숫자만큼의 컴퓨터가 필요한데 경제적으로나 기술적으로나 부담이 아닐 수 없습니다. 그래서 계산기에서 '범용'을 빼려고 합니다.
신경망이라고 하는 인간의 사고체계를 모형화하고 전자회로로 구현하고 싶어진 것입니다. 인간두뇌의 신경세포의 수 만큼은 아니더라도 수천(또는 수만개)개의 CPU가 서로 연결된 계산기를 만들고 싶어진 것입니다. 이런 계산구조의 유용성은 이미 증명되었습니다. 하지만 범용 CPU가 하나 달린 컴퓨터 여러개를 연결하려면 여간 수고로운게 아닙니다. 그래서 수천개의 CPU를 가진 컴퓨터를 만들려고 합니다. 다행이라면 신경망을 구성하는 계산기(신경세포)가 이것저것 다하는 범용 계산장치(CPU)보다 아주 단순하다는 것이죠. 손톱만한 반도체 위에 단순 계산장치 수천개를 서로 연결해 놓고자 합니다.
응용에 따라 알고리즘은 달라 집니다. 이 알고리즘은 프로그래밍 언어로 쉽게 작성 할 수 있습니다. 그래서 프로그래밍 언어로 작성된 알고리즘을 반도체 회로로 바꿔주는 자동화 도구가 등장 했는데 이를 고위합성(HLS, High-Level Synthesis)이라고 합니다.
어쨌든 계산을 수행하는 전자회로는 '하드웨어' 입니다. 이 하드웨어는 한번 만들어지면 고치지 못합니다. 그래서 컴퓨터는 다재다능하도록 만들어 놓은 범용 CPU를 두고 프로그램을 바꿔가며 해당기능을 수행 합니다. 이를 '소프트웨어'라고 합니다.
FPGA 라는 반도체 부품(IC)가 있습니다. 이 반도체는 논리적인 수준에서 구조를 바꿀 수 있습니다. 전자회로의 말단에 해당하는 트랜지스터는 고정되어 있지만 그보다 윗단계에서 산술논리 계산을 수행하는 계산기 구조를 마음대로 재구성 할 수 있습니다. 말하자면 특정 알고리즘에 맞춰 그에 최적화된 CPU로 변신 시킬 수 있는 반도체 부품이 바로 FPGA 라는 것입니다. 프로그램될 수 있는 하드웨어 입니다. 하드웨어가 소프트 해졌다는 뜻입니다.
HLS와 FPGA를 결합하여 프로그래밍 언어로 작성된 인공지능 알고리즘을 소프트해진 하드웨어에서 작동 시키고자 하는 연구가 한창이고 곧 실현될 조짐을 보이고 있습니다.
20년전에 반도체 설계라 하면 '하드웨어용 문서'를 작성하는 행위 였다면 오늘의 반도체 설계는 '하드웨어용'이라는 제약을 떼내고 '일반 문서'를 작성하는 행위로 바뀌었다는 것이 가장 큰 차이라 하겠습니다.
IEEE Spectrum의 2023년 9월호에 실린 기사 "Top Programing Languages 2023"[링크]에 따르면 최고 인기 프로그래밍 언어로 파이썬(Python)을 꼽았다고 한다. 과학기술 뿐만 아니라 다양한 영역에서, 석박사급 연구원에서 어린이에 이르기까지 다양한 수준의 사람들이 파이썬을 사용하고 있다.
그런데 말입니다.....
전통 프로그래밍 언어도 여전 하다는 것을 기억해 두자. 포트란, 코볼 도 건재하다. C 와 유사한 언어, C++, C#, 아두이노등등, 합치면 파이썬을 능가한다. 직업을 얻기 가장 쉬운 언어로는 SQL 이 꼽혔고 자바도 최고 상위권에 올랐다. 수많은 웹 프로그램들 때문일 터다.
"How Python Swallowed the World"[링크] 기사에서 파이썬이 세상을 집어 삼킬 수 있었던 이유로 다음과 같이 꼽았다.
쉽다. 파이썬의 구호는 "배터리 내장됨(batteries included)" 이다. 휴대용 전자기기를 구입하여 배달된 즉시 당장 사용할 수 있다는 뜻이다. 이것저것 준비할 필요 없이 도구들이 완비되어 있다. C++ 같은 컴파일러 언어들은 첫 프로그램을 작성하기 까지 번거로운게 한두가지가 아니다. 단지 컴파일러 대 인터프리터 언어를 비교하자는 게 아니다. 파이썬은 객체를 다룰때 아주 높은 추상성을 유지 하기에 컴퓨터를 다루는 사람들 사이에 공통으로 사용할 의사소통 언어로써 안성맞춤 이란다.
While compiled languages like C++ aren't vanishing, it's clear that Python is becoming the lingua franca of computing.
파이썬은 프로그래밍 언어를 배우려는 사람들에게 진입 장벽이 매우 낮아서 중학생 수준에서 박사급 연구자의 수준을 모두 충족 시켜준단다. 단적으로 대충 코딩해도 뭔가 나온다. 컴퓨터로 또는 마이크로프로세서로 뭔가 해보려는 사람들에게 이만한 장점이 또 있겠는가. 공용 언어로 널리 받아 들여졌기에 수많은 라이브러리들이 개발 되었고 배포되고 있다. 사용자가 많다는 것은 가려운 데를 콕찝어 긁어줄 사람들이, 도구들이 널렸다는 뜻이니 인기가 없을 수 있으랴 싶다.
팬데믹을 거치며 교사와 학부모 사이에 문자와 전화 연락이 급증 했다고 한다. 원격 재가학습이 진행되는 동안 있었던 교사와 학부모 사이의 잦은 접촉이 대면 수업으로 복귀한 이후에도 굳어졌기 때문 이라고 한다. 이 과정에서 학생들 사이에 일어나는 사소한 문제들 조차 까발려 질 때도 있고 학생들은 사생활이 침해 된다고 느끼고 반항적이 될 수도 있단다. 예전에는 자신의 아이들이 문제를 일으켰을 때만 연락을 받곤 하던 학부모들에게는 학교로부터 연락이 반갑지 않을 수 있고, 방어적으로 대하며 때로는 싸움으로 번질 수 있단다. 교사와 학부모 사이 대화의 바람직한 방향에 대해 이 기사는 서로 격려해 주라며 이렇게 끝맺는다.
Ideally, if the teacher did find a spare moment to call home, the news bulletin would be brief. Kraft was careful and measured throughout our conversation, but, when I asked him what kinds of communication with families worked best in his classroom, he answered instantly. "A quick and unscripted, unexpected, positive message," he said. "These families never got that, ever. Just call them up and say, 'Hey, your kid worked really hard this week. Keep up the great work.' That's it."
원칙적으로 교사가 학부모에게 전화할 여유시간이 있었다면 이런 문제가 대두되지 않아야 한다.
[집에 전화를 했다는 것은 교사가 아이를 관찰하고 있었을 터이므로 게시판이 뜨거워지기 전에 교육이 이뤄졌여야 하는게 맞지만 현실은 그렇지 않다. 교사는 학생을 부모에게 일러바치는 꼴이 되버렸다. 이에 반감을 가지는 부모도 있고, 그 사이에 아이들은 속이지 않더라도 감추게 된다.]
Kraft(브라운 대학교 교육학 교수)는 우리의 대화(인터뷰) 내내 [교사, 학부모, 학생 그 누구도 일방적으로 탓할 수 없기에] 신중했지만, 교사가 교실에서 일어난 일을 학생의 가족과 어떤 식으로 해야 의사소통이 가장 효과적인지 물었을 때 망설임 없이 대답했다.
"즉각적이고 에두르지 말고(unscripted) [우리애가 사고를 쳤을까봐 수세적인 부모가] 예상치 못한 긍정적인 메시지"여야 한다고 말했다. "이제껏 학부모들(these families)은 그런 전화를 학교로부터 받아본 적이 없어요. 그런 그들에게 전화해서 '당신의 아이가 이번 주에 정말 열심히 했어요'라고 말하세요. '앞으로도 그렇게 최선을 다해 주세요.'라고 말해 주면 되는 겁니다."