오늘날 빠르게 움직이는 기술 시대에 시장 수요를 충족하는 가장 일반적인 접근법은 SoC(시스템 온 칩)입니다. SoC는 단일 통합 프로세서 코어를 중심으로 전문 가속기와 광범위한 I/O가 둘러싸여 이를 구동하는 주변장치를 지원합니다.
2002년 모바일 데이터 붐 이후 SoC는 스마트폰을 정의하는 핵심 기능을 가능하게 하는 필수 요소가 되었습니다. 같은 추세가 이제 스마트 TV, 커넥티드 카, 급속히 확장되는 IoT(사물인터넷) 생태계 같은 '스마트' 소비자 디바이스에서 SoC의 보편성을 주도합니다.
SoC에 대한 급증하는 수요는 시장을 고도로 경쟁적인 분야로 만들었습니다. 대응하여 설계자들은 더 복잡한 디바이스를 구축하고, 주변장치 제품군을 지속적으로 진화시키며, 설계와 출시 사이의 창을 좁히고 있습니다. 보조를 맞추기 위해 소프트웨어는 가능한 한 일찍 사용 가능해야 하며, 비용이 많이 드는 포스트 테이프아웃 수정을 피할 만큼 견고해야 합니다.
전통적으로 SoC 소프트웨어 팀은 첫 실리콘 샘플을 기다린 후 개발을 시작했습니다. 실리콘 프로토타입 도착은 전 세계 개발자들이 드라이버와 인터페이스를 검증하기 위해 모이는 짧고 강렬한 가져오기 스프린트를 촉발했습니다. 이 공격적 일정에도 소프트웨어는 일반적으로 프로덕션 준비에 수개월, 때로는 수년이 걸려 양산 개시 전 신뢰를 거의 주지 못했습니다.
SoC 설계가 크기와 복잡성에서 성장함에 따라 실리콘 가용성과 프로덕션 준비 소프트웨어 사이의 간극은 수년으로 늘어날 수 있습니다. 오디오, 비디오, USB, 이더넷 등 주변장치 제품군의 급속한 진화는 전문가 고용으로 메워야 하는 전문성 격차도 만들어 비용과 일정을 더욱 부풀립니다.
신뢰할 수 있는 소프트웨어를 더 일찍 제공하기 위해 업계는 '시프트 레프트(shift-left)' 철학을 채택하고 있습니다: 하드웨어 설계와 동시에 개발 시작. 사전 실리콘 개발은 소프트웨어 파이프라인을 가속할 뿐만 아니라 설계 단계 버그를 노출시켜 비용이 많이 드는 마스크 테이프아웃을 피하게 합니다.
사전 실리콘 개발 전략
소프트웨어는 테이프아웃 전 여러 기법으로 시작할 수 있습니다: 소프트웨어 프로토타이핑, RTL 테스트벤치, FPGA 프로토타입, 그리고 가장 효과적으로 풀 시스템 에뮬레이션. 각 방법은 특정 추상화 수준에 초점을 맞추며 고유한 트레이드오프를 가집니다.
System-C 행동 모델
모든 IP 블록에 System-C 모델을 생성하면 개발자가 드라이버를 격리 상태에서 작성하고 테스트할 수 있습니다. 하지만 모든 주변장치를 정확하게 모델링하는 노력은 상당하며, 프로젝트 예산을 빠르게 초과할 수 있는 전담 팀이 필요합니다. 게다가 행동 모델은 모델러의 해석에 크게 의존합니다. 설계 의도와 모델 간 불일치는 나중에 진단하기 비싼 미묘한 버그로 이어질 수 있습니다.
RTL 테스트벤치
검증에 사용되는 같은 Verilog나 VHDL로 구축된 RTL 테스트벤치는 전체 SoC의 사이클 정확한 시뮬레이션을 제공합니다. 하드웨어 설계와 동기화되어 최신 표현을 보장합니다. 단점은 속도입니다: 사이클 정확한 시뮬레이터는 실제 하드웨어보다 몇 배 더 느려 드라이버 개발이 수개월 걸리는 느린 과정이 되어 조기 시작의 이점을 무효화할 수 있습니다.
FPGA 프로토타입
최신 FPGA는 이제 RTL에서 전체 IP 블록을 합성할 수 있어 시뮬레이션 시간의 일부만으로 사이클 정확한 동작을 제공합니다. 각 주변장치를 별도 FPGA에 매핑하면 개발자가 드라이버를 빠르게 작성하고 디버깅할 수 있습니다. 트레이드오프는 전체 SoC 통합(블록 간 통신과 자원 공유)이 빠져 있어 검증 깊이가 제한되고 통합 수준 이슈가 실리콘 가용성 이후에만 드러난다는 것입니다.
그림. 사전 실리콘 소프트웨어 개발 솔루션 요약. (출처: Nitin Garg)
SoC 에뮬레이터
SoC 에뮬레이터는 가장 균형 잡힌 접근법을 나타냅니다. 실리콘과 같은 RTL로 구축되어 사이클 정확한 성능을 제공하면서 Verilog 테스트벤치보다 100배 빠르게 실행됩니다. 이 속도로 전체 OS 포팅, 드라이버 개발, 시스템 레벨 테스트가 수개월이 아닌 수주 내에 가능합니다.
에뮬레이터는 UART, I²C, 디스플레이 컨트롤러, PCIe, 이더넷, Wi-Fi, 카메라, 센서 등 다양한 주변장치도 지원하여 개발자가 전체 개발 보드를 에뮬레이트할 수 있게 합니다. 소프트웨어는 표준 JTAG 도구로 디버깅 가능하며, NAND 플래시 같은 실제 또는 가상 디바이스를 연결할 수 있어 ROM, OS, 펌웨어 검증을 위한 현실적인 환경을 제공합니다.
초기 개발 외에도 에뮬레이터는 포스트 실리콘 디버깅에서 빛을 발합니다. 최종 제품과 같은 OS와 드라이버를 실행하므로 엔지니어는 실리콘 수준 이슈를 에뮬레이터에서 재현하고, 신호 레벨 트레이스를 분석하며, 실리콘이 현장에 도달하기 전 수정사항을 검증할 수 있습니다.
비교 연구에서 에뮬레이터는 속도, 커버리지, 비용 효율성 측면에서 System-C 모델, RTL 테스트벤치, FPGA 프로토타입을 지속적으로 능가합니다. 에뮬레이터 플랫폼에 대한 초기 투자가 높게 보일 수 있지만, 시장 출시 시간 단축과 리스크 완화 절감 효과가 비용을 상회하는 경우가 많습니다.
그림 2. 각 솔루션의 비교 실행 속도. (출처: Nitin Garg)
무어의 법칙에 따라 트랜지스터 수가 약 2년마다 두 배가 되어, 오늘날 64비트 ARM 기반 SoC는 1억-3억 로직 게이트로 향하고 있습니다. 이 환경에서 오직 풀 시스템 에뮬레이터만이 현대 SoC 소프트웨어 팀의 요구사항에 맞춰 확장할 수 있습니다.