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. ;-)
디지키(DigiKey), 엘리먼트14 등 대형 부품상 뿐만 아니라 중소 부품상들도 자기들이 취급하는 부품을 판매 하는데 그치지 않고 각종 교육 동영상(프로그램)들을 제작 배포한다. 이 보고 있자면 "메이커"의 본능을 자극한다. 자연스럽게 구매 버튼을 누를 수 밖에 없다. 손님을 유인한다는 말이 있다. 앉아서 장사하기에는 경쟁자들이 너무 많다.
메모 앱, 문서 작업 소프트웨어, 화면 캡춰 등 모든 일상이 디지털 화한 요즘 수기로 기록하는 일이 드믄것 같습니다. 쉽게 메모를 남길 수 있다는 장점은 오히려 생각을 덜하게 되고 보관을 해두는 것으로 마치 내것 인양 여길 때도 있습니다. 내 컴퓨터 하드디스크 어딘가에 고이 저장해 두고는 다시 꺼내보지도 않고 정작 필요할 때 또 인터넷 검색을 합니다. 남의 정보는 그렇다 쳐도 내가 겪은 일들은 기록해 두도록 합시다. 실험하면서 겪은 각종 사건들, 사소한 실수들, 갑자기 떠오른 생각들 지나다가 발견한 물건들 등등, 하찮아 보이더라도 모든 것들을 기록해 둡니다. 나의 "연구 노트"는 내 인생의 중요한 자산이 될 것입니다.
저의 "연구노트"에 대한 경험을 풀어봅니다. 재작년(2023년)에 반도체를 무료로 제작해주는 정부사업인 "내 칩 제작 서비스"를 접하고 너무나 반가웠습니다. 하지만 설계를 하려면 도구(소프트웨어)가 필요했는데 "반도체"가 들어가면 뭐든 큰 비용이 듭니다. 학생들에게 "무료"로 칩을 제작해 준다지만 반도체 설계 도구라는 장벽을 넘기는 쉽지 않았습니다. 다행히 "오픈-소스" 운동이 활발해 설계 소프트웨어 역시 높은 완성도를 갖추고 있어서 예전의 경험을 바탕으로 표준 셀 디자인 킷을 어렵지 않게 만들 수 있었습니다. 몇번의 시행 착오를 격은 끝에 "실리콘 검증"을 마치고 상당히 안정된 디자인 킷을 갖추게 되었습니다.
20여년 전에 만들었던 IP 검증용 FPGA 에뮬레이션 보드. USB가 흔치 않던 시절이라 PCI 슬롯에 꼽는 방식이었다.
반도체 설계와 검증 도구에 관심을 가졌던 때가 Magic 이라는 레이아웃 도구를 처음 접했던 30년전 쯤으로 기억됩니다. 서울대학교 반도체 공동연구소에서 MPW 칩 제작을 해준다기에 레이아웃 그리는 소프트웨어를 찾다가 인터넷(1990년대의 끝자락!)을 통해 알게 되었습니다. 정확하지는 않은데 버클리의 어느 FTP 사이트에서 소스를 받아 썬 워크스테이션에서 컴파일해서 썼던 것으로 기억됩니다. 내인생의 첫 "내 칩"을 받아들었을 때의 감동이 아직도 생생하군요.
그후 하드웨어 언어(베릴로그와 VHDL)를 접하고 반도체 설계 방법론 탐구에 빠져 지냈습니다. HDL 시뮬레이터가 어찌나 신기했는지 모릅니다. 코뿔소 그림이 새겨진 VHDL 시뮬레이터를 지도교수님을 졸라서 연구실 프로젝트 비용을 떼서 구입 했는데 그게 인생의 전환점이 됐군요. 한 카피에 학생 할인 가격이 500만원으로 기억됩니다. 수십년이 지난 이야기 이지만 그때 몇가지 소프트웨어의 라이센스(프린터 포트에 꼽는 락 드라이버)를 디스 어셈블 크랙해서 나눠 쓰곤 했습니다. 그 때 시뮬레이션과 에뮬레이션 검증에 미쳐서 세월이 가는 줄도 몰랐습니다. "모래시계"라는 드라마의 열풍도 IMF 라는 국가부도의 위기도 몰랐으니까요. 실험실 귀신으로 지내던 시절이었습니다. 그때 날밤 새며 궁리했던 FPGA 에뮬레이션 검증 기법이 오늘의 "내 책상 위에 내 칩(MyChip-on-MyDesk)" 설계 방법론으로 되살아 나게 될 줄은 몰랐군요.
수십년이 지나 소위 "인생 2막"을 "반도체 설계"로 행복하게 맞이할 수 있던 토대는 바로 그 시절에 작성해 뒀던 "연구노트" 입니다. 그때 정성스레 작성한 전자문서(HWP)는 저 먼 우주로 날아갔지만 손으로 작성해 뒀던 공책은 내 책상 위에서 건재합니다. 2001년에 작성했던 노트를 2023년에 꺼내 "내 책상위의 반도체 설계실"을 구축했으니 그때 손으로 작성했던 "연구노트"가 여간 소중하지 않군요. "연구노트"는 이공계 인생의 일기이자 비망록 입니다. "연구노트" 작성으로 앞으로 펼쳐갈 인생 자산을 풍부히 하시기 바랍니다.
Germany’s Oldest Street-Legal Car | 1894 Benz Victoria | German Cars https://www.youtube.com/watch?v=bQ4vB55z0RE
편리함을 맛본 인간은 백년이 안되서 게을러 졌죠. 운전마져 귀찮아지기 시작한 겁니다.
Early Driverless Car in 1971 https://www.youtube.com/watch?v=5ocvNxjN3dc
나혼자 도로를 온통 독차지 할 수 있다면 좋았겠지만, 도로로 나가면 별의별 미친놈들이 넘쳐나는 무법천지에 쌍욕이 저절로 튀어나옵니다. 그래도 도로에서 무사할 수 있는 것은 인간의 "지능" 덕분입니다. 별로 바빠보이지 않은 인간은 운전하기 싫음의 미련을 버리지 못했지요. 그렇다면 운전에 지능을 넣어볼까? 라는 생각을 진작부터 해왔습니다.
NavLab 1 (1986) : Carnegie Mellon : Robotics Institute History of Self-Driving Cars https://www.youtube.com/watch?v=ntIczNQKfjQ
수십년이 지났지만 도로위의 자율주행의 희망은 지난할 뿐이었습니다.
Autonomous Vehicles at CMU Robotics Institute: 1984-2007 https://www.youtube.com/watch?v=N49_CmjbcQ8
History Channel 1998 : Driverless Car Technology Overview at Carnegie Mellon University https://www.youtube.com/watch?v=2KMAAmkz9go
급기야 운전 로봇이 등장하긴 했는데 ....
Inside Zoox: The robot vehicle totally changing transportation | Hard Reset by Freethink https://www.youtube.com/watch?v=tGgGdqr2aIc
운전이 별거 있나요. 상황을 인지하고 문제를 해결한 후 전진!
Sense, Solve, and Go: The Magic of the Waymo Driver https://www.youtube.com/watch?v=hA_-MkU0Nfw
"자동차"는 원래 스스로 달리는 탈것 입니다. 여기에서 인간은 굳이 배제하고는 "자율주행"이라고 합니다. 이미 운전자 없는 "지하철"이 사고없이 지하철로를 누비고 있습니다. 정해진 선로위를 달리면서 말이지요. 그런데 이것은 그간 꿈꿔왔던 "자율 주행"은 아니잖아요?
-------------------------
아주 단순한 자율 주행(?) 로봇으로 "라인 트레이서" 또는 "Line Follower"는 해볼만 합니다. 알리상회에서 아날로그 키트를 팔고 있는데 CDS 센서, OpAmp 전압 비교기, 트랜지스터 모터 구동기로 구성된 간단한 회로를 가지고 있고 차대와 기어 모터 포함하여 단돈 3천원 입니다. 만들어 봤는데 꽤 쓸만 합니다.
https://www.youtube.com/watch?v=1R2xdOOmbDs
아이들 장난감 같지만 만들기에 그치지 않고 회로 분석을 해보면 많은 것들을 알 수 있습니다. 차대와 기계 부품은 그대로 사용하고 디지털 제어로 개조하면 재미 있을 겁니다. 재미있게 설명한 동영상이 있네요.
https://www.youtube.com/watch?v=QoNkpnpvEqc
https://www.youtube.com/watch?v=8Lj5ycrT9Fw
Line Follower 는 한때 우리나라에서도 마이크로 마우스와 함께 인기있는 종목중 하나 였었습니다. 해외에서는 여전히 인기가 있어 보입니다.
심오한 질문을 질문을 주셨습니다. 이 질문은 아마 다음과 같은 뜻을 담았으리라 짐작되네요.
"반도체 설계 도구들은 왜 '불편한' 명령줄(Command-Line Interface)에서 실행하나요?"
응용 프로그램들이 그래픽 사용자 인터페이스(GUI, Graphic User Interface)체제를 갖추면 직관성이 높아 집니다. 한마디로 "척보면" 뭘할지 안다는 것입니다. 이는 사무 자동화 분야에 커다란 혁신이 되었고 컴퓨터 활용이 전문가에서 "누구나"로 옮겨가게 되었습니다. 화면에 보이는 "그림"이 컴퓨터 사용자가 원하는 최종 결과물이 됩니다. "화면에 보이는 것이 바로 당신이 갖게될 출력물"이라는 뜻으로 What You See is What You Get을 줄여서 WYSWYG(위지위그)라고 합니다. 이 GUI의 문제는 응용 프로그램의 수많은 기능들을 화면에 보이는 메뉴로 모두 나열하기 어렵다는 것입니다. 각종 기능들이 메뉴 항목의 어디에 숨어있는지 아는 것으로 "컴 퓨터 활용 능력자"의 평가 척도가 되어버립니다. 이는 문서의 작성 내용과는 무관한 '잔기술' 입니다. 정작 창작자는 없고 그저 베끼기 좋은 도구가 생겨버린 셈입니다. PCB 그리기나 레이아웃 도면 그리기도 위지위그 방식의 저작 도구입니다.
개발 도구로 IDE(Integrated Development Environment, 통합 환경)가 대세 입니다. 뭐가 통합되었다는 뜻일까요? 소프트웨어든 하드웨어를 막론하고 개발은 목적을 묘사하고 이를 물리적인 형태로 바꾸는 절차를 거칩니다. "묘사"는 컴퓨팅 언어로, "물리적"인 결과물은 묘사와 전혀 수준이 다른 2진 기계어 코드(소프트웨어) 또는 레이아웃 도면(반도체 하드웨어)입니다. 앞서 말한 "위지위그"와는 전혀 다른 결과물 얻기 입니다. 그 결과물을 얻는 과정은 여러 단계의 절차(이를 추상화 수준 낮추기라고 합니다)를 거치는데 이를 또다른 소프트웨어가 맞아서 해줍니다. 이들을 자동화 도구라고 부릅니다.
최종 목적물을 얻기까지 여러 자동화 도구들이 동원되고 각 도구마다 제각기 명령 체계를 가지고 있으며 옵션 또한 매우 광범위 합니다. 이들을 모두 통합된 환경에서 운영하려면 명령과 옵션들을 모두 메뉴로 만들고 단축키를 사용해야 하는 GUI로는 어렵습니다. GUI의 또다른 단점은 도구가 발전하면서 메뉴 항목이 사라지거나 새로운 항목이 생길 수 있습니다. 어느 메뉴를 눌러야 할지 어느 항목은 선택사항에서 디폴트로 바뀌었는지 일일이 메뉴들을 모두 찾아 들어가 확인하기는 어렵습니다. 제조기술이 급격히 발전하는 경우 이를 다루는 도구의 갱신 또한 빈번합니다. 소프트웨어 버젼이 바뀌었다고 사용법이 달라져서 곤란을 격은 경험이 있을 겁니다. 아마 반도체 분야처럼 도구 버젼을 많이 따지는 경우도 없을 것입니다.
(C, C++, Verilog 등) 컴퓨팅 언어로 묘사한 내용(행위, behavior)을 물리적 변환이 가능한 형식으로 바꾸고 이를 미리 준비된 라이브러리와 합쳐 최종 목적물을 만들어 냅니다. 전자는 컴파일러(Compiler) 또는 합성기(Synthesizer)라고 하고 후자를 링커(Linker) 또는 자동배치배선(Auto P&R)과 셀 병합(migration 또는 phanton cell merge)이라고 합니다. 반도체 설계에서 라이브러리는 '표준 셀(Standard Cell)'이 이에 해당 합니다. 통합 환경이라고 부르는 도구는 추상화 단계 낮추기에 사용되는 소프트웨어들을 체계적으로 관리해 줍니다. 통합 환경은 사용자의 편의를 도울 뿐이지 실제 목표물을 얻는데 직접적으로 기여하는 부분은 없습니다. 그래서 '환경'이라고 부르나 봅니다.
하드웨어 묘사 언어를 기반으로 하는 디지털 반도체 설계의 과정은 소프트웨어 개발에 근접할 만큼 상당부분 자동화 되어 있습니다. 다만 소프트웨어 개발 도구의 경우 기본 옵션으로도 결과를 얻을 수 있는 것과는 달리 하드웨어 설계에 동원되는 도구마다 명령이 많고 이에 따르는 옵션이 매우 중요합니다. 기본 옵션으로 결과를 내지 못하는 경우가 허다합니다. 이 다양한 처리 옵션들에 대하여 메뉴 누르는 절차를 일일이 기술하기도 어렵고 나중에 재현하려면 번잡하게 됩니다. 이는 설계 생산성을 매우 떨어뜨리는 요인입니다. 그래서 명령줄과 스크립트를 적극 활용 합니다. Makefile은 개발자들이 가장 널리 사용하는 스크립트로 이를 처리하는 유틸리티가 make 입니다. 아마 분야를 막론하고 개발자라면 필수적으로 사용합니다. MPW 로 "내 칩"를 만들어보기 위해 반도체 설계에 입문하려고 나선 지금, 이참에 한번 익혀두면 평생 잘한 일 중 하나로 꼽힐 것입니다. 기본 사용법은 어렵지 않습니다. 아래 링크의 문서를 참고하십시요.