라즈베리 파이(RP2040) 칩 개발에 참여했던 소프트웨어 기술자가 들려주는 이야기 입니다.
The journey to Raspberry Silicon
라즈베리 파이의 개발은 2017년 여름에 시작되었습니다. 소프트웨어 개발자로 참여 했는데 합류할 당시 반도체 설계는 아무것도 몰랐습니다. 처음에 구조(architecture)를 잡고 어떤 기능들을 넣을지 정하고 베릴로그 하드웨어 언어로 모두 꿰맞추기 시작 했습니다. 소프트웨어 언어 C 와 하드웨어 언어 Verilog는 사뭇 다르군요. 카운터를 C 로 작성하면 이랬는데,
베릴로그는 클럭에 맞춰 작동합니다. 더구나 구문 실행의 병렬성이라니....
시뮬레이터로 코드가 실행되는 모습을 디지털 파형으로 본다는 것이 재미(?)있습니다. 코어(ARM-M0 가 사용됨)가 "Hello World"를 출력하는 프로그램을 실행 하는 모습입니다.
시뮬레이터로 소프트웨어를 실행해보기에는 너무나 시간이 오래 걸렸습니다. 칩에서 1초도 안걸릴 내용을 시뮬레이터는 몇시간 씩 걸렸으니까요. 그래서 FPGA 를 동원 했습니다. 칩의 목표 속도가 133Mhz 였지만 48Mhz로 돌리는 것에 만족해야 했습니다. FPGA는 아날로그 회로를 구현할 수 없어서 동일한 기능을 하는 별도 부품(일테면 USB-PHY 같은)을 붙여서 에뮬레이션 보드를 만들었습니다. 에뮬레이션 보드는 속도가 빨랐지만 시뮬레이터 처럼 소스 코드가 내놓는 파형을 일일이 들여다 볼수 없어서 하드웨어 기술자들이 고생을 좀 했습니다.
이랬던 하드웨어 기술자의 책상이 급기야 이렇게 됐습니다.
USB 기능을 시험할 때는 아주 혼란의 도가니 입니다. 칩에 내장될 부트 롬 코드는 저 FPGA에서 개발 되었습니다.
소프트 엔지니어가 내장 롬 코드를 개발하는 것과 동시에 하드웨어 엔지니어는 베릴로그로 작성한 코드들을 합성하여 논리회로로 변환 했습니다. 받아든 테스트 칩은 이런 모습입니다.
반도체 공정은 완벽하지 않습니다. 웨이퍼에서 잘라낸 모든 칩이 모두 양품은 아닙니다. 하드웨어 기술자들은 양품을 골라낼 수 있도록 칩에 테스트 할 수 있도록 DFT(Design-for-Test) 기능을 넣어 두었습니다. 합성된 논리 회로도를 표준 셀에 매핑하여 반도체 제조가 가능한 GDS 파일을 샌산 했습니다. 공정은 TSMC에서 이뤄졌습니다.
양산 패키지 칩은 이제 시험 보드에 장착해 봅니다. 처음 전원을 넣을 때 칩에서 연기가 올라오지 않을까 조마조마합니다. 다행히 무사합니다. RP2040 칩이 보드 중앙에 소켓에 담겨 있군요.
내장 부트 롬도 이상 없이 작동하니 쁘듯 합니다.
실험실에서 좀더 가혹한 환경을 조성하여 테스트 합니다. 견디는 온도, 동작 전압 등등...
마침내 고객의 손에 넘기게 되었습니다.
문서가 부실한 칩은 아무짝에도 쓸모가 없습니다. RP2040이 양산에 들어가는 동안 수개월에 걸쳐 SDK(Software Development Kit, 소프트웨어 개발 킷)을 작성해야 했습니다. 완벽한 문서를 마련한 까닭에 오늘날의 라즈베리 파이가 있을 수 있었습니다.
댓글 없음:
댓글 쓰기