본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/1장: Arm 프로세서 소개

[ARM프로세서] 시스템 반도체 개발 과정 오버뷰(Overview)

이번 포스트에서는 반도체 개발 과정에 대해서 알아보겠습니다.
 
1. 스팩 확정, RTL 설계(베릴로그), 합성 검증
 
먼저 반도체 회사의 마케팅 부서에서 반도체의 스팩을 정합니다. 이후 RTL이란 툴을 사용해 C 코딩과 같이 로직을 코딩합니다. RTL로 반도체 로직을 설계하는 것이라 볼 수 있죠. 이어서 설계한 내용을 바탕으로 툴을 돌립니다. 이를 Synthesis 혹은 합성이라고 부르기도 합니다. 합성한 결과를 갖고 PC 환경에서 시뮬레이터를 돌려서 검증을 시도합니다. 이 과정을 거쳐서 반도체 기능을 수행하는 반도체 모듈이 만들어지게 되는 것이죠.
 
2. FPGA 검증/Back-End 개발
 
이렇게 충분히 시뮬레이션을 한 다음에, 그 결과를 FPGA에 넣어서 시스템 반도체에 대한 검증을 시도합니다. FPGA는 RTL을 반도체와 비슷하게 동작시키는 하드웨어인데, 자일링스가 가장 유명합니다. 일반적인 칩은 설계된데로만 일정하게 동작하지만 FPGA는 내부 회로를 프로그래밍해서 바꾼다고 보시면 됩니다. 
 
이 과정을 거쳐 반도체 설계에 대한 검증을 수행하는데요. 여기까지 개발된 내용들은 모두 디지틀 로직의 세계입니다. 이어서 백앤드(Back-End) 개발을 통해 로직을 실제 물리적으로 바꾸는 과정을 진행합니다. 백앤드를 구성하는 여러 기법들이 있는데, 가장 대표적인 기법이 하드닝(Hardening)입니다. 똑같은 로직이라도 하드닝을 어떻게 했는가에 따라 반도체 성능이 천차만별입니다. 따라서 하드닝을 잘하는 반도체 업체가 실력이 있다고 봐야 하고, 하드닝을 잘하는 개발자는 몸 값이 상당합니다.
 
3. DB Out
 
팹리스 업체에서 백앤드 개발을 끝내면 이제 "DB Out"을 수행합니다. DB OUT이란 퀄컴이나 엔디비아와 같은 팹리스 업체에서 백앤드 개발을 통해 검증을 마무리한 반도체 설계 프로그램을 TSMC나 삼성전자와 같은 파운드리 업체에 넘기는 것을 의미합니다.
 
4. 공정 개발/웨이퍼(Wafer) 작업
 
파운드리 업체는 팹리스 업체에서 설계한 내용(반도체 모듈)을 바탕으로 공정을 만듭니다. 공정이라면 16나노, 8나노라는 이야기를 들어봤을 꺼에요. 이런 공정을 설계한 반도체 모듈에 맞게 만든 다음에, 웨이퍼로 된 샘플을 만듭니다. 그 다음에 패키징을 과정을 거치게 됩니다. TV나 유튜브를 보면 흰색 작업복을 입고 웨이퍼를 뚫어지게 쳐다보는 장면을 볼 수 있죠? 파운드리에서 작업하는 개발자들의 모습입니다.
 
5. 브링업/특성 평가
 
패키징된 샘플을 가져오면 개발실에서는 브링업을 수행하고 반도체에 대한 특성 평가를 합니다. 온도나 전류를 다르게 전달하면서 시퀀스가 제대로 나오는지에 대한 특성 평가를 수행하는 것이죠. 반도체 특성 평가를 진행하는 개발자들은 "시간을 갈아 넣는 느낌"이라고 말하기도 합니다. 반도체 특성이란 정확한 답이 없기 때문에 끊임없는 테스팅과 튜닝 과정을 거친다고 하네요. 
 
6. BSP 개발/시스템 인테그레이션
 
그 다음 SoC 벤더 업체에서 BSP 개발을 수행합니다. 어느 정도 BSP가 크래시가 나지 않을 정도로 기본 동작이 되게 작업한 다음에, 소스를 체계적으로 정리해 커스터머(제품 개발)업체에게 ES(Engineering Sample) 버전 소스를 전달합니다.
 
이 과정으로 반도체 개발이 이뤄지게 됩니다. ARM에 대해 배우기 전에 먼저 반도체의 특성을 알 필요가 있기 때문에 반도체를 개발하는 과정을 알 필요가 있습니다.
 

 

< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>
 
* 유튜브 소개 영상