전통적 칩 개발 방법론....
Written by
Keith
on
on
심심해서 정리해본다.
1. 요구사항 분석 (Requirements Analysis)
이 단계에서는 SoC가 수행해야 할 기능, 성능, 제약사항 등을 정의합니다. 하드웨어와 소프트웨어 양측의 요구사항이 동시에 고려됩니다.
- 하드웨어 요구사항: 칩의 성능(클록 주파수, 처리량), 전력 소비, 면적, 인터페이스(PCIe, USB 등), 신뢰성, 공정 기술 등이 명세됩니다.
- 소프트웨어 요구사항: 지원할 운영체제(OS), 필수 드라이버 및 펌웨어 기능, 애플리케이션 요구사항, 개발 환경(툴체인, 디버거) 등이 정의됩니다.
- 이러한 요구사항은 명세서 형태로 문서화되어 모든 개발 단계의 기준이 됩니다.
2. 아키텍처 설계 (Architectural Design)
전체 SoC의 큰 그림을 그리는 단계로, 하드웨어와 소프트웨어의 구조 및 상호작용 방식이 결정됩니다.
- 하드웨어 아키텍처: CPU, GPU, DSP, 메모리 컨트롤러, 주변 장치 등 주요 IP(Intellectual Property) 블록들을 정의하고, 블록 간의 버스 구조(AMBA AXI/AHB, NoC), 클록/리셋 구조, 전력 관리 아키텍처 등을 설계합니다.
- 소프트웨어 아키텍처: 부트로더, 펌웨어, OS 커널 드라이버, 미들웨어, 애플리케이션 계층 등 소프트웨어 스택의 전반적인 구조가 설계됩니다. 특히 각 하드웨어 블록과 소프트웨어 간의 통신을 위한 레지스터 맵(Register Map) 및 인터럽트 구조 등 SW-HW 인터페이스가 명확히 정의됩니다.
- 시스템 레벨 모델링 (System-Level Modeling): SystemC, TLM(Transaction Level Modeling)과 같은 고수준 모델링 언어를 사용하여 하드웨어와 소프트웨어의 동시 동작을 시뮬레이션하여 시스템 성능 및 기능적 문제를 조기에 검증합니다. 이는 실제 하드웨어 없이 소프트웨어 개발을 시작할 수 있는 기반을 제공합니다.
3. 상세 설계 (Detailed Design)
각 블록의 구체적인 구현과 초기 소프트웨어 개발이 병렬로 진행되는 단계입니다.
- 하드웨어 RTL 설계: Verilog, VHDL과 같은 하드웨어 기술 언어(HDL)를 사용하여 각 블록의 논리적 기능을 기술합니다. IP 통합, 클록 도메인 교차(CDC) 설계, 리셋 동기화 등이 포함됩니다.
- 소프트웨어 개발 시작: 하드웨어 레지스터 맵 및 동작 시퀀스를 기반으로 부트로더, 저수준 펌웨어, 기본 드라이버 개발을 시작합니다. 이 단계에서는 주로 QEMU와 같은 에뮬레이터 또는 Fast Model 등 소프트웨어 모델 기반 환경에서 개발 및 디버깅이 이루어집니다.
- Co-Verification: 하드웨어 시뮬레이션 환경에서 소프트웨어를 직접 실행하며 하드웨어와 소프트웨어 간의 상호작용을 검증합니다.
4. 구현 (Implementation) - 백엔드 설계
하드웨어 RTL 코드를 물리적인 칩 레이아웃으로 변환하는 과정입니다.
- 하드웨어 백엔드: RTL 코드를 게이트 레벨 넷리스트로 합성(Synthesis)하고, 칩 내부에 물리적으로 배치(Place) 및 배선(Route)하는 작업이 진행됩니다. 클록 트리 합성(CTS), 정적 타이밍 분석(STA), 물리적 검증(DRC, LVS 등)을 통해 칩의 전기적 및 물리적 무결성을 확인합니다.
- 소프트웨어 지속 개발: 하드웨어 백엔드 작업이 진행되는 동안, 소프트웨어 팀은 고수준의 시뮬레이션 모델 또는 FPGA 기반 프로토타이핑 보드 위에서 OS 포팅, 미들웨어, 애플리케이션 개발을 계속 진행하여 실제 칩 도착 시 바로 테스트할 수 있도록 준비합니다.
5. 테이프 아웃 및 제작 (Tape-out and Fabrication)
설계가 완료된 데이터를 파운드리(반도체 위탁 생산 업체)에 제출하여 실제 칩을 제작하는 단계입니다.
- 하드웨어 제작: 설계 데이터를 기반으로 마스크 제작, 웨이퍼 제작, 칩 다이(Die) 분리, 패키징 과정을 거쳐 물리적인 칩이 완성됩니다.
- 소프트웨어 준비: 이 시점에서는 실제 칩이 나오면 즉시 구동 및 디버깅할 수 있도록 초기 부트로더, 디버그용 펌웨어, 핵심 드라이버 등을 완벽하게 준비합니다.
6. 검증 및 테스트 (Verification and Testing) - 실리콘 검증
실제 제작된 칩 위에서 하드웨어와 소프트웨어의 통합 동작을 검증하는 단계입니다.
- 초기 실리콘 검증 (Bring-up): 제작된 칩에 전원을 인가하고, 최소한의 펌웨어를 로드하여 칩의 기본 동작 여부를 확인합니다.
- 드라이버 개발 및 디버깅: 각 하드웨어 블록의 드라이버를 실제 칩 위에서 테스트하고 디버깅하여 하드웨어 제어가 정상적으로 이루어지는지 확인합니다.
- OS 포팅 및 기능 검증: 실제 칩 위에 OS를 포팅하고, OS가 모든 하드웨어 자원을 올바르게 인식하고 제어하는지 검증합니다.
- 시스템 레벨 테스트 및 특성 분석: 펌웨어, 드라이버, OS, 미들웨어, 애플리케이션이 모두 통합된 상태에서 시스템 전체의 기능 및 성능을 검증합니다. 스트레스 테스트, 성능 벤치마킹 등을 수행합니다. 테스트 과정에서 발견된 하드웨어 및 소프트웨어 버그를 수정합니다.
7. 유지보수 (Maintenance)
칩 출시 후에도 지속적인 지원이 이루어지는 단계입니다.
- 소프트웨어 업데이트: 펌웨어, 드라이버, OS 패치 등을 통해 버그 수정, 성능 개선, 새로운 기능 추가 등을 제공합니다.
- 하드웨어 Revision 관리: 필드에서 발생하는 하드웨어 문제를 분석하고, 필요한 경우 다음 칩 Revision에 개선 사항을 반영합니다.
SoC 개발은 Hardware/Software Co-Design 및 Co-Verification이라는 개념을 바탕으로, 하드웨어와 소프트웨어 팀 간의 지속적인 협력과 통합 검증이 필수적인 복합 공정입니다.