산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

임베디드 SoC 검증을 위한 C 테스트 자동 생성

SoC 설계가 점점 복잡해지고 있지만, 많은 시스템 레벨 검증 테스트 스위트는 여전히 수천 줄의 수작업 C 코드로 구성되어 있습니다. 이는 자동화 원칙에 정면으로 위배되는 구식 접근 방식입니다. 특히 제조 전 디바이스 전체를 검증하기 위해 임베디드 프로세서에서 실행되는 C 테스트는 여전히 수작업에 의존하고 있습니다.

테스트 생성 자동화는 SoC 개발 전 단계에서 생산성을 높입니다. UVM 테스트벤치의 제약 랜덤 기법은 시나리오별 랜덤 벡터를 생성해 블록 레벨에서 커버리지를 향상시킵니다. 그러나 설계가 블랙박스로 남아 있고, 자극, 체크, 커버리지 코드가 별도로 작성되므로 대형 블록에서는 번거롭고 오류가 발생하기 쉽습니다.

이러한 기법을 시스템 레벨로 확장하는 것은 프로세서 테스트 코드와 I/O 트랜잭션을 통합해야 하고, 보통 에뮬레이터나 프로토타입에서 실행되기 때문에 어렵습니다. 전체 SoC 검증에는 프로세서 자체를 실행하는 것이 필요하지만, UVM 등 제약 랜덤 기법은 일반적으로 프로세서 코드를 포함하지 않습니다. 실제로는 프로세서를 가상 I/O로 대체해 프로세서를 제외한 서브시스템을 테스트하는 방식으로 UVM을 SoC에 적용합니다.

제약 랜덤 테스트벤치의 한계를 인정한 엔지니어들은 시뮬레이션과 하드웨어 에뮬레이션 양쪽에서 프로세서에서 실행되는 C 테스트를 수작업으로 작성합니다. 그러나 이러한 플랫폼은 완전한 OS를 지원할 수 없어 테스트가 베어메탈 모드로 실행되며, 구성 작업이 늘어납니다. 조정되는 멀티코어·멀티스레드 실행은 드물어, 동시성과 코히어런시 같은 중요한 동작은 제한적으로만 검증됩니다.

C 테스트 자동 생성

자동화된 C 테스트 생성은 엔지니어링 시간을 절약하고 커버리지를 확대합니다. 생성된 테스트 케이스는 수작업 테스트보다 SoC 기능을 더 많이 커버해 까다로운 코너 케이스를 발견합니다. 멀티스레드·멀티프로세서 테스트는 모든 병렬 경로를 실행하고, 동시성을 검증하며, 메모리 코히어런시를 스트레스 테스트하고, I/O 트랜잭션과 동기화합니다. 그 결과 시스템 레벨 기능 커버리지가 일상적으로 90%를 넘어, 기존 방식을 크게 앞섭니다.

테스트 생성 도구인 '테스트 스위트 합성'은 의도한 설계 동작을 캡슐화한 명확한 그래프 기반 시나리오 모델을 활용합니다. 엔지니어는 Accellera Portable Stimulus Standard를 사용해 네이티브 C++로 이 모델을 작성하거나, 설계 논의 중 화이트보드에 그리던 일반적인 칩 데이터플로 다이어그램을 반영해 시각적으로 작성할 수 있습니다.

각 모델은 자극, 체크, 커버리지 메트릭, 디버그 데이터를 캡슐화해 생성기가 설계의 모든 측면을 실행하는 고품질의 자가 검사 C 테스트를 생성하는 데 필요한 모든 정보를 제공합니다. 계층적·모듈형 모델은 블록 레벨 테스트를 전체 SoC 모델에서 통째로 재사용하고 팀과 프로젝트 간에 공유할 수 있게 합니다. 합성 도구는 단일 의도 모델을 스레드와 I/O 포트를 아우르는 동시 테스트로 분해해 긴밀한 동기화를 보장합니다.

테스트 스위트 합성의 이점

테스트 스위트 합성의 핵심 이점은 의도 모델 레벨에서 커버리지 목표를 설정할 수 있다는 점입니다. 의도를 명시한 후 도구가 이를 분석해 필요한 테스트 케이스 수와 예상 기능 커버리지를 추정합니다.

일반적인 SoC에서는 수천 개의 테스트를 생성할 수 있습니다. 의도를 제약함으로써 엔지니어는 특정 커버리지 목표를 타겟팅하고 도구가 중요한 영역에 집중하게 할 수 있습니다. 이는 테스트 설정, 검증 실행, 커버리지 평가, 재구성의 지루한 반복 사이클을 없애줍니다.

유수 반도체 기업의 대형 SoC 사례 연구에서 수작업 테스트 대비 테스트 구성 시간이 80% 단축되었습니다. 자동화로 더 엄격한 테스트 케이스가 생성되어 커버리지가 84%에서 97%로 향상되었습니다. 모델은 환경 간 이식성이 입증되었습니다.

단일 의도 모델로 가상 플랫폼, RTL 시뮬레이션, 에뮬레이션, FPGA 프로토타입, 심지어 제조 후 실리콘 검증 단계의 칩까지 다양한 환경용 테스트 케이스를 생성할 수 있습니다.

디버깅은 SoC 레벨에서 여전히 주요 시간 소모 요소입니다. 테스트가 결함을 발견하면 엔지니어는 실패를 원래 테스트와 근본 시나리오 모델로 추적해야 합니다. 각 테스트 케이스를 그래프 표현과 연관시킴으로써 모듈화된 자가 완결형 테스트가 버그의 빠른 격리와 분석을 가능하게 합니다.

적용 시나리오

합성된 테스트 케이스는 현실적인 유스케이스 시나리오를 구동할 수 있습니다. 예를 들어 그림 1의 디지털 카메라 SoC를 생각해 보겠습니다.

임베디드 SoC 검증을 위한 C 테스트 자동 생성
그림 1: 이미지 처리 SoC 예시. (출처: Breker Verification Systems)

SoC의 블록 레벨 구성 요소는 두 개의 프로세서, 주변 장치, 메모리로 이루어집니다. 블록 다이어그램 아래의 간소화된 그래프는 검증을 위한 고수준 경로를 보여줍니다. 상단 경로로 표현된 한 시나리오는 SD 카드에서 JPEG를 읽어 메모리 영역을 통해 포토 프로세서로 라우팅하고, 디스플레이용으로 이미지를 변환한 뒤 두 번째 메모리 블록에 적재하고, 마지막으로 디스플레이 컨트롤러로 전송합니다. 각 고수준 블록은 계층적이며 수많은 액션과 결정을 포함합니다.

합성 도구는 이에 따라 랜덤화된 테스트를 스케줄링합니다. 가장 단순한 형태에서는 그림과 같이 테스트가 단일 스레드에서 순차적으로 실행됩니다. 진정한 힘은 도구가 여러 스레드와 프로세서에 걸쳐 애플리케이션을 인터리빙하고, 설계가 허용하는 만큼 동시 인스턴스를 실행하며, 복잡한 패턴으로 메모리를 할당할 때 발휘됩니다. 그림의 대체 뷰는 세 스레드에 분산된 테스트와 다양한 메모리 영역 활용을 보여줍니다.

그림은 고수준이지만, 합성 도구는 실제로 계층적 그래프를 수천 개의 액션과 연결로 평탄화하고, 솔버 알고리즘을 거치는 랜덤화된 결정을 포함합니다. 그래프를 순회하면서 AI 계획 알고리즘이 원하는 출력을 분석하고 입력 테스트를 최적 정렬을 위해 다듬습니다. 또한 메모리 할당, 주소 맵 접근, 인터럽트 처리 등 OS 같은 서비스를 제공해 완전한 테스트 구조를 지원한 뒤, 스토리지와 리소스를 할당하며 테스트를 랜덤하게 스케줄링합니다.

결론

제약 랜덤 테스트벤치가 블록 검증에서 수작업을 없앴듯, 임베디드 프로세서 SoC를 위한 합성 테스트 콘텐츠가 시스템 레벨 검증 노력을 획기적으로 줄임이 입증되었습니다. 이 접근법은 이제 블록 레벨 검증과 실리콘 후 검증으로 확장되고 있습니다. 자동화된 C 테스트는 '가능한 한 자동화하라'는 원칙을 구현해, 극적인 커버리지 향상과 압축된 검증 일정을 제공합니다.

임베디드

  1. ST마이크로일렉트로닉스, 파워트레인·ADAS·전동화용 28nm FD-SOI MCU와 임베디드 PCM 선보여
  2. 아날로그 디바이시스, 임베디드 월드 2019에서 AI·산업 네트워킹·전력 솔루션 선보여
  3. GIGAIPC, 임베디드 월드 2019에서 IoT 혁신 쇼케이스… 스마트 리테일·디지털 사이니지·스마트 팩토리·안면 인식
  4. Cervoz 초박형 M.2 NVMe SSD: 산업용 엣지 애플리케이션을 위한 고성능 스토리지
  5. Keysight, 항공우주·방위·5G 설계용 고급 N5511A 위상 잡음 테스트 시스템 공개
  6. ST·YouTransactor, 5만대 이상 모바일 결제 단말기에 탑재된 PCI 보안 SoC 출시
  7. UltraSoC Bus Sentinel: SoC 버스 트랜잭션 보안 위한 실시간 하드웨어 IP
  8. IBASE CMI300-988: AMD Ryzen Embedded V1807B 탑재 초소형 Mini-ITX PC
  9. Axiomtek, 팬리스 eBOX100-51R-FL 출시: 초소형 인텔 기반 엣지 컴퓨팅 솔루션
  10. 임베디드 시스템 & 시스템 통합: 현대 아키텍처 및 연결성