※ 해당 포스팅 내용에 관심있으신 대학생 분들, 고등학생 분들의 메일은 언제든 환영입니다! 저도 사실 본 전공은 반도체 설계가 아닌 이동통신이라 지식이 많이 부족하지만, yhm1620@khu.ac.kr로 메일주시면 언제든 제 지식을 공유해드릴게요 :)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
지금은 석사과정으로 이동통신을 전공하고 있지만, 사실 학부 과정때는 반도체 설계에 흥미를 갖고 공부했었습니다.
그래서 요즘 반도체학과 신설 관련 기사들을 보면, 반도체 설계를 하던 그 때 생각이 많이 납니다 ㅎㅎ
반도체학과에서 어떤 과목을 배우는지, 또 이를 위해서 미리 준비해야할 것이 무엇인지에 대해 관심있으신 분들이 많으실텐데요.
그래서 그때 당시 저를 지도해주셨던 교수님께 배운 것들을 조금 공유해보고자 합니다.
반도체학과는 '반도체 설계' 인재 양성을 위해 신설되는 학과인데요. 반도체 설계의 가장 기초가 되는 과목은 '논리회로'라는 과목입니다.
보통 전자공학과 2학년, 빠르면 1학년 때 논리회로라는 수업을 듣죠. 사실 기존에 배우는 수학이나 과학 과목과는 완전히 다른 영역이라, 반도체 학과 진학을 원하는 학생이라면 중학교나 고등학교부터 미리 공부해도 좋을 과목이라 생각합니다.
그런데 이 과목이 참...흥미를 갖기가 어려운 과목입니다.
2의 보수부터 시작해서, 갑자기 AND, OR, NAND 등 이상한 논리 게이트가 등장한 다음에, 카르노맵까지..
학기가 지날수록 이 과목을 왜 배워야 하는지, 어디에 쓰이는지 감이 잘 오지 않는 과목입니다.
사실 공학을 전공할 때, 특히 기초 과목을 공부할 때 그 과목을 배우는 이유와 쓰임새를 미리 알고 공부하는 것이 매우 중요합니다.
만약 그렇지 않다면 스스로 본인이 전공과 맞지 않는다 착각하고 전공 공부를 소홀히 하게 되죠. 저 역시도 논리회로를 공부할 때 그랬습니다...
해당 포스팅은 제가 돌아봤을 떄, 논리회로 수업을 처음 들을 때 알았으면 좋았을 것들을 정리해보았습니다.
우선 아래 사진과 기사를 보도록 할게요
사진 하단의 기사에서 가져온 그림인데, 흔히 칩(chip)이라고 불리죠. 인터넷에 '반도체'를 검색하면 흔히 볼 수 있는 사진입니다.
기사는 메모리 반도체와 비메모리 반도체에 대한 기사인데요. 비메모리 반도체는 시스템 반도체라고도 하죠.
반도체 학과와 마찬가지로 언론에서 흔히 들어볼 수 있는 단어들입니다.
흔히 언론에서는 "대한민국이 메모리 반도체는 세계 최고이지만, 비메모리 반도체(시스템 반도체)는 아직 발전이 많이 필요하다"고들 하죠.
반도체 학과 학생이 되려면, 이 문장의 의미를 조금 더 자세히 파악할 능력이 필요합니다.
아래 두 사진은 각각 위 사진에 있는, 흔히 '칩'이라 불리는 반도체의 내부 모습을 나타내는 사진, 그리고 이를 더 확대 했을 때의 사진입니다.
위 사진은 터치 센서와 생체 신호 센서의 동작을 처리하는 시스템 반도체입니다.
두 번째 사진에서 NOR, NAND, NOT 게이트 등을 볼 수 있네요. 하늘색 선은 wire(전선)를 나타냅니다.
이렇게 시스템 반도체의 내부는, 논리회로 수업에서 배우는 기본 게이트들의 집합으로 이루어집니다.
그리고 위 사진은 Synopsys 사의 'Deisgn complier'라는 툴을 통해 시스템 반도체를 설계하는 과정을 나타냅니다. 즉 아직은 컴퓨터로 반도체를 만드는 단계인거죠. 이를 반도체 용어로 '합성(Synthesis)'라고 합니다.
이 역시 반도체 학과에서 주로 배우게 될 내용입니다. 아마 4학년이나 대학원에서 이 design compiler 등의 반도체 설계 툴을 이용해 반도체를 합성하는 방법을 주로 배우게 될 것입니다.
이 프로그램이 공정을 거쳐서 실제 물리적인 것으로 만들어지면, 맨 위 기사의 사진처럼 칩의 형태를 보이게 됩니다. 정말 신기하죠 ㅎㅎ
그렇다면 이 design complier로 만들어진, 논리 게이트들의 집합으로 나타내어진 이 프로그램은 어떻게 만들어진 것일까요?
답은 바로 verilog, VHDL등의 하드웨어 합성 언어(HDL, Hardware Description Language)에 있습니다.
즉 정리해서 결론부터 말하면, 시스템 반도체는 이 verilog, VHDL이라는 하드웨어 합성 언어의 코딩으로부터 만들어지는 것입니다.
그리고 VHDL 보다는 verilog를 많이 씁니다. C언어와 비슷하기 때문이죠. 전자공학과에서는 보통 논리회로 시간에 조금 배우고, 3 4학년 때 수업에서 verilog를 배우게 됩니다.
반도체 학과에서는 그보다 조금 이른, 2학년 쯤에 배우지 않을까 싶습니다.
반도체 학과는 결국 시스템 반도체 산업의 발전을 위해 이 verilog을 잘 하는 인재를 양성하는 것이 주된 목표가 될 것입니다. 대한민국이 시스템 반도체 강국이 되기 위해서는, verilog을 잘하는 인재가 많이 필요합니다(메모리 반도체는 verilog의 비중이 조금 낮습니다).
Verilog로 작성된 하드웨어 코드를 design complier를 통해 합성되면 위의 사진처럼 논리회로로 변환된 결과를 얻을 수 있습니다.
요즘 '코딩'에 대한 관심이 매우 높죠. 소프트웨어 코딩도 중요하지만, 반도체 학과에서는 이 하드웨어 코딩을 주로 배우게 될 것입니다.
소프트웨어에 비해 훨씬 어려워서, 굉장히 많은 노력이 필요합니다. 그 난이도 때문에 반도체 학과가 새로 생길 정도니까요!
개인적인 생각으로는, 머지 않은 미래에 과학고 등 특목고나, 과학 중점 일반 고등학교에서 verilog를 배우는 과목이 개설되지 않을까 싶습니다. 코딩 과목이 새로 생긴 것처럼요. 아마 관련 학원들도 많이 생기지 않을까 싶습니다.
우선 verilog 코드 예시를 한번 볼까요?
위 코드가 바로 그 위에 보여드린, 논리 게이트로 표현된 프로그램으로 합성되기 전의 verilog 코드의 한 예시입니다. 언뜻 봐도 굉장히 복잡한 논리를 보이죠.
이 코드는 터치 센서(MPR121)과 생체 신호 센서(ADS1292)의 동작을 처리하는 시스템 반도체를만들기 위한 verilog 코드입니다. 자율주행차의 핸들에 탑재할 용도로 설계된 것이구요.
반도체 설계 대전 출전을 위해 저와 팀원들이 직접 작성한 코드인데, 며칠 밤을 새며 공부하고 코딩하고 했던 기억이 있네요..ㅎㅎ
하지만 이 복잡해 보이는 코드를 design compiler에게 몇 가지 합성 제한(constraint)과 함께 알려주면, 신기하게도 자동으로 논리 게이트의 조합으로 바꿔줍니다. 그래서 design compiler 같은 툴을 EDA(Electonic Design Automation)라고 부른답니다.
하지만 더 중요한 건 따로 있는데요. 바로 그 어떤 복잡한 논리도 기본적인 논리게이트의 조합으로 만들어질 수 있다는 점입니다.
이것이 반도체 학과의 기초 과목, 논리회로를 배우는 이유입니다.
논리회로를 배운 이후에는, 논리식이나 카르노맵을 그릴 일은 잘 없습니다. 아닐 수도 있지만, 저는 그랬었구요..거의 EDA 툴 활용법과 verilog 설계에 초점을 맞춰 교수님께 지도를 받았었습니다.
지금까지 반도체 학과에서 공부하게 될 내용들을 알아보았습니다. 크게 논리회로, verilog를 통한 시스템 반도체 논리 설계, EDA 툴 사용법 및 constraint를 넣는 방법 등을 배우지 않을까 싶네요.
흔히 언론에서 반도체 인력이 부족하다는 말이 많죠. 반도체 전문가가 되기 위해서는 굉장히 공부할 것들이 많아 힘들겠지만, 공부를 마치고 나면 그만큼 나라를 이끌어갈 수 있는 유능한 인재가 될 수 있는 좋은 기회라고 생각을 합니다.
이상으로 논리회로를 배우는 이유를 간단히 소개해 보았습니다. 다음 포스팅으로는 반도체 학과의 또 다른 핵심 과목, 반도체 공학을 배우는 이유를 다뤄보도록 할게요!
댓글 영역