본문으로 건너뛰기
고급약 40분

xIL 환경 계층 — MIL·SIL·PIL·HIL에서 무엇을 가장 싸게 잡는가

임베디드 소프트웨어는 실제 차량이나 장비에 올리기 전에 여러 단계의 시뮬레이션 환경을 거친다. 모델과 플랜트를 모두 모델로 돌리는 MIL, 생성·작성된 코드를 호스트에서 컴파일해 돌리는 SIL, 목표 프로세서에서 돌리는 PIL, 실제 ECU에 실시간 플랜트 시뮬레이션과 물리 입출력을 붙이는 HIL의 차이를 정리하고, 결함 유형별로 가장 싸게 잡히는 계층, MIL과 SIL의 백투백 시험, HIL 장비의 비용·가용성과 자동화, ISO 26262와 Automotive SPICE SWE.4~6 매핑을 다룬다.

  • #임베디드
  • #MIL
  • #SIL
  • #PIL
  • #HIL
  • #xIL
  • #시뮬레이션
  • #자동차

개념

왜 계층이 필요한가

제동 제어 소프트웨어를 시험하려고 매번 실제 차량으로 빙판길을 달릴 수는 없다. 비싸고, 느리고, 위험하고, 같은 조건을 두 번 만들 수 없다. 그래서 자동차·항공·산업 제어 분야는 실제 환경의 일부를 모델로 바꿔 끼우며 단계적으로 검증한다. 각 단계의 이름이 "무엇이 루프 안에 있는가(X-in-the-Loop)"를 뜻해서 xIL이라 부른다.

여기서 플랜트(plant) 는 제어 대상, 즉 차량 동역학·모터·배터리·밸브처럼 소프트웨어가 제어하는 물리 세계다. 루프란 제어기가 플랜트 상태를 읽고 명령을 내리면 플랜트가 반응하고, 그 반응을 다시 제어기가 읽는 폐루프를 말한다.

네 계층

계층제어기플랜트실행 위치시간
MIL(Model-in-the-Loop)모델(Simulink 등)모델개발 PC시뮬레이션 시간(실시간 아님)
SIL(Software-in-the-Loop)생성·작성된 C 코드를 호스트용으로 컴파일모델개발 PC실시간 아님
PIL(Processor-in-the-Loop)목표 컴파일러로 빌드해 목표 프로세서(평가 보드)에서 실행모델(PC)코드는 보드, 플랜트는 PC대개 실시간 아님
HIL(Hardware-in-the-Loop)실제 ECU(양산 하드웨어·펌웨어)실시간 시뮬레이터ECU + HIL 장비실시간, 물리 입출력
MIL   [제어 모델] ⇄ [플랜트 모델]                         모두 PC 안
SIL   [C 코드(호스트 컴파일)] ⇄ [플랜트 모델]              모두 PC 안
PIL   [C 코드(타깃 컴파일, 평가 보드)] ⇄ 통신 ⇄ [플랜트 모델(PC)]
HIL   [실제 ECU] ⇄ 전압·전류·CAN 신호 ⇄ [실시간 시뮬레이터 + I/O 보드 + 부하 장치]

차량 전체로 가면 VIL(Vehicle-in-the-Loop, 실제 차량과 가상 환경), 실차 시험이 이어진다. 오른쪽으로 갈수록 현실에 가깝고, 비싸고, 느리고, 장비가 부족하다.

각 계층은 무엇을 가장 싸게 잡나

모듈 1 레슨 2에서 본 결함 전파와 비용처럼, 결함은 그것을 드러낼 수 있는 가장 왼쪽 계층에서 잡을 때 가장 싸다. 각 계층은 앞 계층이 못 보는 것을 새로 볼 수 있게 된다.

계층새로 보이는 결함예
MIL제어 알고리즘·요구사항 해석 오류, 상태 머신 누락 전이미끄러짐 판정 조건이 요구와 반대, 모드 전환 누락
SIL코드 생성·수작업 코딩 오류, 고정소수점 변환의 오버플로·양자화, 정수 나눗셈모델에서는 실수였던 값이 16비트 정수로 넘침
PIL목표 컴파일러·최적화 차이, 실행 시간·스택 사용량, 엔디언·자료형 크기타깃에서 int 가 16비트, 최적화 수준에 따른 결과 차이, 태스크 주기 초과
HIL실제 하드웨어 입출력, 드라이버, 통신, 타이밍, 진단, 전기적 고장 처리센서 단선 처리, CAN 타임아웃, 버스 오프, 실제 인터럽트 부하

반대로 이렇게 읽을 수도 있다. HIL에서 알고리즘 결함을 처음 찾는다면 비싼 장비 시간을 MIL에서 찾을 수 있었던 결함에 썼다는 뜻 이다. 계층 설계의 목표는 각 결함 유형을 그것을 볼 수 있는 가장 싼 계층에 배치하는 것이다.

백투백 시험 — MIL과 SIL을 대조한다

모델에서 코드를 자동 생성했다면, 같은 입력을 모델(MIL)과 코드(SIL)에 넣어 출력이 같은지 비교한다. 이것이 백투백(back-to-back) 시험이다. 모듈 35 레슨 2에서 본 ISO 26262-6 단위 검증 방법 표의 "모델과 코드 간 백투백 비교 시험"이 바로 이것이다.

입력 시나리오 세트(요구사항 기반 + 구조 커버리지 보완)
        │
        ├──→ MIL 실행 → 출력 A(시계열)
        └──→ SIL 실행 → 출력 B(시계열)
                     │
             비교: |A − B| 가 허용 오차 이내인가?
             (고정소수점 변환이면 양자화 오차만큼의 허용 폭을 사전에 정의)

같은 방식으로 SIL과 PIL을 비교하면 호스트와 타깃의 차이 가 드러난다. 판정의 핵심은 허용 오차를 미리 정하고 근거를 남기는 것 이다. 차이가 나오면 그 원인이 허용된 양자화인지, 결함인지 분류한다. 백투백은 "모델이 맞다"를 증명하지 않는다는 점도 기억한다. 모델 자체의 검증은 요구사항 기반 시험으로 따로 한다.

HIL — 비싸고 모자란 장비

HIL 장비는 실시간 프로세서, 아날로그·디지털 입출력 보드, 통신 인터페이스, 전기 고장 주입 장치(FIU), 실제 부하 또는 모의 부하, 전원 장치로 구성된다. 한 대에 수억 원이 드는 경우도 흔하고, 프로젝트마다 수가 적어 예약제로 돌아가는 병목 자원 이다.

그래서 HIL은 운영 방식이 품질을 좌우한다.

  • 자동화가 기본 — 사람이 앉아 버튼을 누르면 하루 8시간밖에 못 쓴다. 시험 시퀀스를 스크립트화해 야간·주말에 무인으로 돌린다
  • 회귀 세트와 탐색 시간의 분리 — 야간은 자동 회귀, 주간은 새 기능 확인과 결함 재현에 쓴다
  • 장비 자체의 검증 — 플랜트 모델 버전, I/O 보정, 배선을 관리하지 않으면 결함이 ECU가 아니라 장비에서 나온다. HIL 셀프 테스트(루프백으로 입출력 확인)를 매일 시험 전에 돌린다
  • 시험 전 조건 기록 — ECU 펌웨어 빌드 해시, 플랜트 모델 버전, 파라미터 세트, 장비 구성을 결과와 함께 남긴다(레슨 7)

HIL 자동화 시험 한 건의 모양은 대개 이렇다.

TC-HIL-ABS-042  저마찰 노면 급제동 시 ABS 개입
전제  : ECU FW 3.1.0 (해시 a41c9e2), 플랜트 모델 VehDyn v5.2, 노면 μ=0.2
1. 차속 80km/h 정속 주행 상태로 시뮬레이션 안정화(3s)
2. 브레이크 페달 100% 입력(t0)
3. 기록: 바퀴 속도 4채널, 밸브 명령, 휠 슬립률, CAN 0x1A0
판정:
  - t0 후 150ms 이내 첫 밸브 감압 명령
  - 슬립률이 0.3을 초과하는 구간이 누적 200ms를 넘지 않음
  - 정지까지 DTC 없음
산출물: 측정 파일(MF4), 판정 로그, 스크린숏 없이 자동 판정 결과

판정이 숫자로 자동화 되어 있어야 수백 건을 밤새 돌릴 수 있다. "그래프를 보고 괜찮아 보이면 합격"인 HIL 시험은 자동화되지 않는다.

규격 매핑 — ISO 26262와 Automotive SPICE

xIL 계층은 규격 요구와 1:1로 대응하지 않는다. 규격은 무엇을 검증하라 고 하고, 계층은 어디서 할지 다. 대표적 배치는 이렇다.

검증 활동ISO 26262-6Automotive SPICE 4.0주로 쓰는 계층
단위 검증9절 소프트웨어 단위 검증SWE.4 소프트웨어 단위 검증MIL, SIL(백투백), PIL(타깃 확인)
통합·컴포넌트 검증10절 소프트웨어 통합과 검증SWE.5 소프트웨어 컴포넌트 검증과 통합 검증SIL, PIL, HIL
소프트웨어 전체 검증11절 임베디드 소프트웨어 시험SWE.6 소프트웨어 검증HIL
시스템 통합·검증Part 4SYS.4, SYS.5HIL, VIL, 실차

ISO 26262-6 11절은 목표 하드웨어에서의 소프트웨어 시험을 요구하고, 시험 환경으로 HIL·차량 등을 든다. 모듈 35 레슨 2에서 본 것처럼 호스트(SIL) 결과를 타깃 결과처럼 쓰려면 차이 분석이 필요 하다. PIL이 그 다리 역할을 한다.

Automotive SPICE 평가에서는 각 SWE 프로세스의 검증 결과가 어떤 환경에서 나왔는지 가 증거에 드러나야 한다. 모듈 35 레슨 7에서 본 SWE.4~6 기본 실천(검증 수단 명세, 검증 수단 선택, 결과 기록, 양방향 추적)을 xIL 관점으로 옮기면, 시험 명세마다 실행 계층과 그 계층을 선택한 이유 를 적고, 결과를 요구사항과 추적하는 것이다.

실무에서 왜 필요한가

xIL 계층을 모르는 팀은 두 가지 실수를 한다. 모든 것을 HIL에서 하려다 장비 대기열이 몇 주씩 밀리거나, SIL 결과만으로 출시를 판단해 타깃에서만 나는 결함을 현장에서 만난다. 계층을 이해한 테스터는 시험 케이스마다 "이 결함은 어느 계층에서 처음 보이는가" 를 물어 배치하고, HIL의 비싼 시간을 HIL에서만 볼 수 있는 결함 — 실제 입출력, 타이밍, 전기적 고장 — 에 집중시킨다. 이 배치가 곧 시험 전략이고, 기능안전 심사와 A-SPICE 평가에서 검증 전략의 근거로 제시된다.

채용시장에서의 위치

자동차 전장 공고에서 "HILS 시험 엔지니어"는 독립 직무로 꾸준히 나온다. 자격요건에 dSPACE·NI·Vector 계열 HIL 장비, Simulink 모델 이해, 시험 자동화 스크립트(Python 등) 경험이 자주 들어간다. 면접 단골 질문은 "MIL·SIL·PIL·HIL의 차이"와 "백투백 시험이 무엇이고 허용 오차를 어떻게 정하나"다. 차이를 표로 외운 답보다, 결함 유형별로 어느 계층에서 잡아야 싼지 를 예로 설명하는 답이 훨씬 설득력 있다. HIL 자동화 경험은 웹 테스트 자동화 경험과 사고방식이 비슷해 전환 경로로도 쓰인다.

실습 과제

과제 1 — 결함 계층 배치 (15분)

전기차 배터리 관리 시스템(BMS)을 가정하고 다음 결함이 처음 보일 수 있는 가장 왼쪽 계층을 고른 뒤 이유를 한 줄씩 적는다. (a) 충전 상태 추정 알고리즘이 저온에서 발산 (b) 셀 전압 합산이 16비트로 넘침 (c) 타깃에서 10ms 태스크가 12ms 걸림 (d) 셀 전압 측정선 단선 시 고장 처리 누락 (e) 과전류 판정 조건이 요구와 반대 (f) 최적화 수준 -O2에서만 결과가 다름.

과제 2 — 백투백 허용 오차 정하기 (10분)

모델에서 실수형이던 모터 토크 명령(범위 −300~300Nm)이 코드에서 16비트 부호 있는 정수, 스케일 0.01Nm로 변환됐다. 양자화로 생길 수 있는 최대 오차를 계산하고, MIL과 SIL 백투백 허용 오차를 얼마로 정할지 근거와 함께 적는다. 이 스케일에서 범위 끝이 표현 가능한지도 확인한다.

과제 3 — HIL 시험 케이스 자동화 (15분)

본문 TC-HIL-ABS-042 형식으로 "냉각수 온도 센서 단선 시 대체값 사용과 경고등 점등" HIL 시험 케이스를 쓴다. 전제(버전·모델), 절차, 숫자 판정 기준, 산출물을 모두 채우고, 단선을 어떤 장비로 만드는지 적는다.

자가 체크리스트

  • MIL·SIL·PIL·HIL에서 제어기와 플랜트가 각각 무엇으로 구성되는지 말할 수 있다
  • 계층별로 새로 보이는 결함 유형과 그 예를 들 수 있다
  • 백투백 시험의 목적, 허용 오차를 미리 정하는 이유, 백투백이 증명하지 못하는 것을 설명할 수 있다
  • HIL 장비가 병목인 이유와 자동화·장비 검증·조건 기록의 필요성을 말할 수 있다
  • ISO 26262-6 911절과 A-SPICE SWE.46을 계층에 대응시킬 수 있다
  • 숫자로 자동 판정되는 HIL 시험 케이스를 쓸 수 있다

흔한 실수

  • 모든 시험을 HIL에 몰아넣는다. 알고리즘 결함은 MIL에서 훨씬 싸게 잡힌다. HIL 시간은 HIL에서만 보이는 결함에 쓴다.
  • SIL 통과를 타깃 통과로 읽는다. 컴파일러·자료형·실행 시간 차이는 PIL·HIL에서만 보인다. 차이 분석 없이 대체하지 않는다.
  • 백투백 허용 오차를 결과를 본 뒤 정한다. 사후에 정한 허용 오차는 결함을 덮는다. 변환 방식에서 계산해 미리 정한다.
  • 백투백 일치를 모델 검증으로 착각한다. 모델이 틀리면 코드도 똑같이 틀린다. 모델은 요구사항 기반 시험으로 따로 검증한다.
  • HIL 판정을 눈으로 한다. 그래프를 보고 괜찮다고 판정하면 자동화도 재현도 안 된다. 숫자 기준을 쓴다.
  • 플랜트 모델 버전을 기록하지 않는다. 모델이 바뀌면 결과도 바뀐다. 결과마다 모델·파라미터·펌웨어 버전을 남긴다.

참고 자료

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

MIL — 모델 시험
부품을 만들기 전에 설계 모델만으로 동작을 시험하는 단계.
SIL — 안전 완전성 수준 · 소프트웨어 포함 시험
이 커리큘럼에서 두 가지로 쓰인다. ① 고장이 났을 때 사람이 다칠 위험이 큰 정도에 따라 매기는 안전 등급(숫자가 클수록 엄격하다) ② 설계 모델이 아니라 실제로 만들어진 코드를 개발용 컴퓨터에서 돌려 보는 시험 단계. 앞뒤 문장에 등급 숫자가 있으면 ①, 모델·실물 시험과 나란히 나오면 ②다.
PIL — 프로세서 포함 시험
실제 칩에 코드를 올려 돌려 보는 단계. 모델 시험과 실물 시험 사이에 있다.
HIL — 하드웨어 포함 시험
실제 부품을 연결해 두고, 주변 환경만 컴퓨터로 흉내 내서 시험하는 방식.
ECU — 전자 제어 장치
자동차 안에서 특정 기능을 담당하는 작은 컴퓨터. 요즘 차에는 수십 개가 들어 있다.
CAN — 캔 통신
자동차 안의 작은 컴퓨터들이 서로 신호를 주고받는 통신 방식.
ISO — 국제표준화기구
여러 나라가 모여 "이건 이렇게 하자"를 문서로 정하는 단체. 그 문서 자체를 번호로 부른다.
SPICE — 스파이스
개발 과정을 항목별로 평가하는 국제 틀. 자동차 분야 변형이 널리 쓰인다.
SWE — 소프트웨어 공정 그룹
스파이스 평가에서 소프트웨어 관련 항목에 붙는 묶음 이름. 번호로 세부 항목을 가리킨다.

용어집 전체 보기