개념
왜 계층이 필요한가
제동 제어 소프트웨어를 시험하려고 매번 실제 차량으로 빙판길을 달릴 수는 없다. 비싸고, 느리고, 위험하고, 같은 조건을 두 번 만들 수 없다. 그래서 자동차·항공·산업 제어 분야는 실제 환경의 일부를 모델로 바꿔 끼우며 단계적으로 검증한다. 각 단계의 이름이 "무엇이 루프 안에 있는가(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-6 | Automotive SPICE 4.0 | 주로 쓰는 계층 |
|---|---|---|---|
| 단위 검증 | 9절 소프트웨어 단위 검증 | SWE.4 소프트웨어 단위 검증 | MIL, SIL(백투백), PIL(타깃 확인) |
| 통합·컴포넌트 검증 | 10절 소프트웨어 통합과 검증 | SWE.5 소프트웨어 컴포넌트 검증과 통합 검증 | SIL, PIL, HIL |
| 소프트웨어 전체 검증 | 11절 임베디드 소프트웨어 시험 | SWE.6 소프트웨어 검증 | HIL |
| 시스템 통합·검증 | Part 4 | SYS.4, SYS.5 | HIL, 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 자동화 경험은 웹 테스트 자동화 경험과 사고방식이 비슷해 전환 경로로도 쓰인다.