[매스웍스]ISO 26262 프로젝트에시뮬링크(Simulink)를 활용하는 방법
ISO 26262 프로젝트에시뮬링크(Simulink)를 활용하는 방법
매스웍스

매스웍스 톰 얼키넌(Tom Erkkinen) / 임베디드 코더(Embedded Coder) 제품 관리자

자율주행 자동차 혹은 기존의 안전 관련 임베디드 시스템을 개발하는 자동차 엔지니어들은 승용차 개발 기능 안전 표준인 ISO 26262의 까다로운 프로세스 요건을 효율적으로 달성할 방법을 모색하고 있다. 모든 미디어가 이러한 ISO 26262 기능 안전 표준에 주목하고 있는 만큼 업계 전문가들은 최신 코딩 방식 또는 버그 제거 툴 등 안전 시스템 구현에 대해 많은 조언을 하고 있다. 하지만 업계 전문가들이 오래 전에 깨달은 바에 따르면, 안전은 소프트웨어 및 그 코딩 방식보다는 시스템 및 그 요구 사항의 올바른 구현에 좌우된다.
연속 및 불연속 시간 시뮬레이션을 근간으로 하는 시뮬링크(Simulink®)의 모델 기반 설계(Model-Based Design)를 통해 전체 시스템을 설계하고, 일찍부터 다양한 주행 조건 및 오류 시나리오 하에서 테스트한 다음 주행 시험로에서 시험을 실시하거나 차량 주행 시험(fleet test)를 진행할 수 있다. 이 방식은 툴 검증을 포함하여 ISO 26262에 명시된 프로세스 활동도 지원한다. 매스웍스의 IEC 인증 키트(IEC Certification Kit)에서 이러한 지원을 자세히 다루며 국제 인증 기구 티유브이슈드(TÜV SÜD)의 툴 인증서 및 보고서도 제공한다.
이 글에서는 티유브이슈드에서 승인한 워크플로우에 따라 ISO 26262 프로젝트에 시뮬링크(Simulink)를 사용하는 방법을 소개한다. ISO 26262 및 모델 기반 설계를 소개하고, 다음과 같은 작업들에 대해 살펴본다.
- 요구사항 개발
- 설계 모델링
- 코드 생성
- 설계 검증
- 코드 검증
- 툴 검증

ISO 26262와 모델 기반 설계
ISO 26262는 수동 설계 및 코드뿐 아니라 모델 기반 설계에 대한 지침을 포함하고 있다. 또한 모델 기반 설계의 몇 가지 이점에 대해서도 설명한다.
프로세스 전 과정에 걸쳐 모델을 활용하면, 매우 일관성 있고 효율적인 개발이 가능하다.
본 표준에서는 수학 모델링이 ‘광범위하게 사용’ 되는 가운데 모델링 툴이 소프트웨어 개발에 ‘준정형적(Semi-formal) 그래픽 방식’을 사용한다고 설명한다. 본 표준에 따르면 모델링은 필요한 기능(임베디드 소프트웨어)을 구현할 뿐 아니라 전체 시스템 모델을 만들기 위한 실제 물리적 시스템(차량 모델 및 환경 모델)의 시뮬레이션도 지원한다.
그러면 매우 복잡한 자동차 시스템도 상당한 세부 수준 및 우수한 계산 속도로 모델링하여 실제와 가깝게 동작을 시뮬레이션하는 것이 가능하다. 차량/환경 모델은 개발 과정에서 점진적으로 실제 시스템 및 실제 환경으로 대체되지만, 그 기능 모델은 코드를 생성하여 제어 장치의 임베디드 소프트웨어를 구현하는 데 청사진의 역할을 할 수 있다.
그림1은 일반적인 시뮬링크(Simulink) 폐루프 시스템 모델이며, 컨트롤러, 플랜트 및 신호 처리기로 구성된다. ISO 26262에 따르면 시스템 설계 사양이 소프트웨어 개발의 입력이 되지만, 근본적으로 안전은 시스템 문제이므로 훨씬 더 중요한 의미를 갖는다.
시스템 설계가 점차 정교해지면서 프로덕션 코드를 작성할 만한 세부 수준의 소프트웨어 청사진이 된다. ISO 26262에서는 이 모델이 정교해지는 과정을 ‘모델 진화(model evolution)’라고 부른다.
현실적으로 기능 모델은 모델 진화 과정을 통해 초기 사양 모델에서 설계 모델을 거쳐 구현 모델로 진화하고 최종 단계에서 코드로 자동 변환된다.
ISO 26262는 다양한 차량안전등급(Automotive Safety Integrity Level, ASIL) 기반 활동을 위한 방식을 제안한다. 본 가이드를 참조하여 활용 사례에 적합한 워크플로우를 마련할 수 있다. ISO 26262 프로세스의 개요를 그림2에서 확인할 수 있다. 실선 화살표는 개발 활동을, 점선 화살표는 검증 및 확인 활동을 나타낸다. ISO 26262에서 말하는 ‘모델 진화’는 줄임표(…)로 표시된다.


요구사항 개발
안전 관련 개발 프로세스의 시작은 기능 및 안정 요구 사항을 작성하는 것이다. ISO 26262에서는 ‘소프트웨어 아키텍처 설계와 소프트웨어 안전 요구 사항 간의 양방향 추적 기능’을 활용하여 소프트웨어 아키텍처 설계를 검증하는 것을 권장한다. 이를 위해 시뮬링크 리콰이어먼트(Simulink Requirements™)를 사용하여 모델, 테스트, 코드의 요구 사항을 작성하고 추적할 수 있다. 시뮬링크 리콰이어먼트(Simulink Requirements)는 마이크로소프트 워드(Microsoft® Word®), 마이크로소프트 엑셀(Microsoft Excel®), IBM® 래셔널 도어스(Rational® DOORS®) 등 다른 툴에 대한 양방향 추적을 지원한다. 요구사항의 구현 및 검증 상태는 시뮬링크 리콰이어먼트(Simulink Requirements)에서 모니터링하고 관리한다. 또한, 생성된 코드에 요구 사항 링크가 나타날 수 있다(그림3).


설계 모델링
‘ISO 2626262와 모델 기반 설계’ 섹션에서 언급한 것처럼 ISO 26262에서는 기능 모델이 하이 레벨 실행 사양에서 프로덕션 코드 생성이 가능한 세부 설계로 진화하는 과정을 설명한다. 일반적으로 다음과 같은 수정 및 개선이 이뤄진다.
- 시뮬링크 컨트롤 디자인(Simulink Control Design™) 이산 툴을 사용하여 연속 시간(S 도메인)의 블록을 불연속 시간(Z 도메인)으로 변환
- 픽스트 포인트 디자이너(Fixed-Point Designer™)를 사용하여 배정밀도(double precision) 데이터를 단정밀도(single precision) 또는 고정 소수점(Fixed-point)으로 변환
- 스테이트플로우(Stateflow®)를 사용하여 진단, 모델 로직, 상태 기계, 스케줄링 추가
ISO 26262는 ASIL B~D에서 모델링 지침(Style guidelines)을 사용할 것을 강력히 권장하며, 이를 위해 MAAB 모델링 지침(Style Guidelines) 및 시뮬링크(Simulink)에 제공되는 ISO 26262를 위한 고무결성 지침(High Integrity Guidelines)을 사용할 수 있다. 시뮬링크 체크(Simulink Check™)는 두 지침의 검사를 자동화한다. 편집 단계에서 기준에 부합하지 않는 블록의 삽입과 같은 문제에 플래그를 표시할 수 있다. 직접 지침 및 검사를 포함시킬 수도 있다.


코드 생성
ISO 26262에 따르면 ‘소프트웨어 유닛의 구현에는 소스 코드를 생성하고, 객체 코드로 변환하는 것이 포함’된다. 이를 위해 임베디드 코더(Embedded Coder®)를 사용하여 시뮬링크(Simulink) 모델에서 C, C++, 오토사(AUTOSAR) 코드를 생성할 수 있다. 이 코드는 MISRA C®:2012 자동 코드 지침에 부합할 수 있다. ISO 26262에서는 모델 기반 설계에 대한 코드 지침과 수동 코드에 대한 지침이 다를 수 있음을 지적하면서 그 예로 MISRA®를 든다.
IEC 인증 키트(IEC Certification Kit)는 C, C++ 및 ASIL A부터 D까지 포함한 오토사(AUTOSAR)용 임베디드 코더(Embedded Coder)를 위해 툴 검증을 지원한다. 그 티유브이슈드(TÜV SÜD) 인증 보고서에서는 다음과 같이 설명한다.

임베디드 코더(Embedded Coder)는 ISO 26262의 툴 지원 및 자동화 요구 사항을 충족시킨다.
일반적으로 임베디드 코더(Embedded Coder)는 다음과 같은 활용 사례 3가지에 적용된다.
1. 프로덕션 코드 생성에 쓰이는 모델을 위한 C 코드 생성
2. 프로덕션 코드 생성에 쓰이는 모델을 위한 오토사(AUTOSAR) 응용프로그램 소프트웨어 구성 요소의 C 코드 및 설명 파일 생성
3. 프로덕션 코드 생성에 쓰이는 모델을 위한 C++ 코드 생성


임베디드 코더(Embedded Coder)는 메모리 및 속도를 위해 코드를 최적화하는 옵션을 제공한다. 또한 ARM을 위한 단일 명령 다중 데이터 처리(SIMD® for ARM®) 및, 인텔(Intel®) 등 하드웨어 액셀러레이터를 활용하는 프로세서별 최적화를 생성할 수도 있다. ISO 26262에 기술된 대로 모델-코드 PIL(processor-in-the-loop) 테스트를 사용하여 최적화 코드가 규정된 허용오차 범위에서 시뮬레이션 결과와 일치하는지 확인할 수 있다.
생성된 소스 코드에서 컴파일러 및 링커를 사용하여 실행 객체 코드를 만든다. IEC 인증 키트(IEC Certification Kit)의 워크플로우에서는 코더, 컴파일러, 프로세서의 최적화가 가능하다. 이는 PIL 테스트가 실행 객체 코드의 검증에 쓰이는 경우 대규모 프로덕션 전자제어장치(ECU)에 필수적이다.


설계 검증
ISO 26262는 유닛 및 통합 레벨 활동을 포함하여 소프트웨어 설계 및 구현을 검증하는 여러 정적/동적 방식을 권장한다. 모델 기반 설계에 대해서는 “소프트웨어 개발 프로세스에 따라 테스트 객체가 이 모델에서 파생된 코드이거나 모델 자체가 될 수 있다”고 기술한다.
시뮬링크 테스트(Simulink Test™)는 시뮬링크(Simulink) 내에서 ISO 26262 확인 및 검증 활동을 위한 프레임워크를 제공한다. 모델 및 모델로부터 생성된 코드를 위한 시스템 차원의 시뮬레이션 기반 테스트를 개발, 관리, 실행하는 데 이를 활용할 수 있다. 그림4는 테스트 시퀀스 및 평가 블록의 예이다.
IEC 인증 키트(IEC Certification Kit)의 ISO 26262용 티유브이슈드(TÜV SÜD) 보고서에서는 확인 및 검증 자동화에서 시뮬링크 테스트(Simulink Test)의 역할을 명확하게 정의한다.


[시뮬링크 테스트(Simulink Test)에서] 시뮬링크(Simulink) 모델 및 생성된 코드를 확인하고 검증하는 핵심 활동을 자동화할 수 있다. 다음의 활용 사례는 자동차 기능 안전 표준(Functional Safety Standards) ISO 26262에 따른 소프트웨어 개발 프로세스에 필요한 활동을 보여준다.
- 시뮬링크(Simulink) 모델 테스트 개발 및 실행
- 모델과 코어 간 연속(back-to-back) 테스트를 위한 테스트 개발 및 실행
- 테스트 결과 평가
- 테스트 보고서 생성
- 요구사항 및 테스트 케이스 간 추적 가능성 확인


ISO 26262에서는 구조 범위 분석을 통해 테스트가 완전한지 확인하고, 의도하지 않은 기능을 찾아낼 것을 권장한다. 엄밀성을 높이는 방법 3가지를 제시하는데, 마지막 2가지가 ASIL-D에 강력히 권장된다.
- 구문 범위 (Statement coverage)
- 분기 범위 (Branch coverage)
- MC/DC 범위 (MC/DC coverage)
이 표준에 따르면 ‘모델 기반 설계의 경우 ‘모델 레벨에서 구조 범위 분석을 수행할 수 있는데 모델에 대해 유사 구조 범위(analogous structural coverage) 메트릭을 사용하면 된다.’ 또한 구조 범위로 충분하지 않을 경우에는 ‘추가 테스트 케이스를 지정하거나 근거를 제시해야’ 한다.
시뮬링크 커버리지(Simulink Coverage™)는 모델 및 생성된 코드에 대해 구조 범위를 제공하며, 시뮬링크 테스트(Simulink Test)를 통한 테스트 실행을 위해 손쉽게 활성화할 수 있다. 모델 범위로 충분하지 않을 경우 시뮬링크 디자인 베리파이어(Simulink Design Verifier™)를 사용하여 MC/DC를 포함한 필수 범위를 다룰 추가 테스트 케이스를 자동 생성할 수 있다. 또한, 시뮬링크 체크(Simulink Check)는 복잡성을 줄이기 위해 모델을 재작성한다. 메트릭 대시보드가 있어 프로젝트 품질을 평가하고 ISO 26262의 ‘소프트웨어 구성 요소 및 인터페이스 의 낮은 복잡도 및 제한된 크기 적용’ 요건을 충족할 수 있다(그림5).

IEC 인증 키트(IEC Certification Kit)는 시뮬링크 체크(Simulink Check) 및 모델 및 코드 범위를 포함한 시뮬링크 커버리지(Simulink Coverage), 시뮬링크 디자인 베리파이어(Simulink Design Verifier), 시뮬링크 테스트(Simulink Test)를 위한 티유브이슈드(TÜV SÜD) 인증서 및 보고서를 제공하면서 툴 검증을 지원한다.


코드 검증

ISO 26262는 소프트웨어 설계 및 구현을 검증할 수 있도록 몇 가지 옵션을 제공한다. IEC 인증 키트(IEC Certification Kit)에서 설명하는 한 가지 방법을 따르면 제한된 추적 검토를 통해 생성된 코드에서 의도하지 않은 기능을 찾아낼 수 있다. 예를 들어 블록 또는 신호가 추적되지 않는 코드가 있다. IEC 인증 키트(IEC Certification Kit)는 이 용도의 추적 행렬(trace matrix)을 자동으로 생성한다. 또는 SIL(software-in-the-loop) 테스트 과정에서 시뮬링크 커버리지(Simulink Coverage)를 사용하여 모델 범위와 코드 범위를 비교하거나 시뮬링크 코드 인스펙터(Simulink Code Inspector™)를 사용할 수 있다.
마지막으로 폴리스페이스 버그 파인더(Polyspace Bug Finder™)를 사용하여 MISRA 준수 여부를 확인할 수 있다. MISRA 검사 및 코드 범위 분석은 프로젝트에 생성된 코드 및 수작업 코드 소프트웨어가 혼합된 경우 특히 유용하다. 더 엄밀하게 폴리스페이스 코드 프루버(Polyspace Code Prover™)를 사용하여 0으로 나누기와 같은 런타임 오류가 없는지 확인할 수 있다.
IEC 인증 키트(IEC Certification Kit)는 폴리스페이스(Polyspace®) 제품에 대한 티유브이슈드(TÜV SÜD) 인증서 및 보고서로 툴 검증을 지원한다.
실행 코드를 컴파일하고 생성한 다음 PIL 테스트를 활용하여 타깃 프로세서에서 실행 중인 코드에 대해 모델 테스트를 재사용할 수 있다(그림6).


ISO 26262에서는 ASIL C 및 D에 대한 연속(back-to-back) 테스트를 강력히 권장한다. 이 표준에 따르면 대표성 있는 타깃 하드웨어 환경에서 테스트하는 것이 중요하며, 테스트 환경과 하드웨어 환경의 차이점을 인식해야 한다.


테스트 환경과 타깃 환경의 차이점은 소스 코드 또는 객체 코드에서 비롯될 수 있다. 이를테면 프로세서의 데이터 단어(data word) 및 주소 단어(address word)의 비트폭(bit widths)이 다를 수 있다.


그러나 모든 컴퓨터 과학자가 알고 있는 것처럼 여러 플랫폼 사이에서 특히 부동 소수점 데이터의 경우 여러 가지 이유로 수치 차이가 발생할 수 있다. 사소하게 시작했지만 축적되어 커질 수도 있는데 특히 피드백 제어 시스템에서 그렇다. 따라서 ISO 26262는 다양한 루프 내(in-the-loop) 연속(back-to-back) 테스트 방식을 제안한다.


소프트웨어 유닛 테스트는 다음과 같은 다양한 환경에서 실행할 수 있다.
- MIL(model-in-the-loop) 테스트
- SIL(software-in-the-loop) 테스트
- PIL(processor-in-the-loop) 테스트
- HIL(hardware-in-the-loop) 테스트


시뮬링크 테스트(Simulink Test)는 임베디드 코더(Embedded Coder)로 SIL과 PIL을, 시뮬링크 리얼타임(Simulink Real-Time)™으로 HIL을 자동화하는 등 여러 루프 내 테스트를 자동화한다. 또한, 시뮬링크 커버리지(Simulink Coverage)에서 범위 메트릭을 사용하여 합격/불합격 보고서를 제공한다.


툴 검증
ISO 26262-8에서는 버전 관리, 구성 관리, 문서화 등 추가 프로세스를 설명한다. 이 프로세스는 시뮬링크 프로젝트(Simulink Projects), 시뮬링크(Simulink) 모델 차별화 및 병합, 시뮬링크 리포트 제너레이터(Simulink Report Generator™)에서 각각 지원한다.
이 표준에서는 툴 검증에 대한 지침도 제공한다. 툴 공급업체가 각자의 툴을 검증하는 것은 허용하지 않으며, 사용자가 해당 프로젝트에 맞게 툴을 검증해야 한다. IEC 인증 키트(IEC Certification Kit)는 일반 활용 사례, 참조 워크플로우, 툴 분류 분석, 소프트웨어 툴 기술 문서, 툴 검증 보고서, 검증 테스트를 제공하면서 효과적으로 툴을 사전 검증한다.
티유브이슈드(TÜV SÜD)에서 매스웍스 툴 개발 및 품질 프로세스뿐 아니라 버그 보고 기능까지 검토하고 감사하면서 각 제품 릴리스의 결과를 인증한다. IEC 인증 키트(IEC Certification Kit)에 이러한 티유브이슈드(TÜV SÜD) 인증서 및 보고서가 포함되어 있으며, 적합한 확인 및 검증 워크플로우를 따를 필요성을 전제로 한다. 이 키트는 이 글에서 살펴본 것과 같은 일반적인 활용 사례를 기반으로 한 참조 워크플로우를 제공한다.
ISO 26262 목표를 시뮬레이션(Simulink)에서 지원하는 기능과 연결하는 등 더 세부적인 정보도 제공한다(그림7).


검증된 툴을 사용하더라도 해당 소프트웨어 또는 시스템의 안전이 보장되는 것은 아니다.


ISO26262
ISO 26262는 승용차를 위한 국제 기능 안전 표준이다. 안전 관련 전기/전자(E/E) 시스템의 오작동으로 인해 발생할 수 있는 위험을 다룬다. ASIL을 위험 분류 단계(A~D)로 사용하며, ASIL D가 최고 무결성 단계다. 이 표준은 9개의 규범 파트가 있으며, 10번째 파트에 지침이 수록돼 있다. 각 파트는 별도의 문서로 제공된다. ISO 26262는 목표를 기반으로 하고 규범의 성격을 띠지 않지만 수백 페이지의 지침을 포함하고 있다. 파트 4, 6, 8은 각각 시스템 [ISO 26262-4], 소프트웨어 [ISO 26262-6], 툴 검증 [ISO 26262-8]을 다루고 있다.
ISO 26262 초판은 2011년 발표되었다. 2018년에 제2판 ISO 26262:2018이 나올 예정이다. 제2판은 오토바이, 트럭, 버스 등 다른 차량 유형을 지원한다. 또한 반도체에 대한 새로운 지침이 수록될 것이다.


첨부파일
1804027_001.jpg  
1132
IANEWS
2018-08-01
1131
IANEWS
2018-08-01
1130
IANEWS
2018-08-01
1129
IANEWS
2018-08-01
1128
IANEWS
2018-08-01
1127
IANEWS
2018-08-01
1126
IANEWS
2018-08-01
1125
IANEWS
2018-08-01
1124
IANEWS
2018-08-01
1123
IANEWS
2018-08-01
1 [2] [3] [4] [5] [6] [7] [8] [9] [10]