주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

SIL 및 PIL 시뮬레이션

SIL 및 PIL 시뮬레이션이란?

Embedded Coder®를 사용하면 모델에 대한 SIL(Software-in-the-Loop) 및 PIL(Processor-in-the-Loop) 시뮬레이션을 실행할 수 있습니다. 이러한 시뮬레이션은 전체 모델 또는 모델의 일부에 대한 소스 코드를 생성합니다. SIL 시뮬레이션은 개발 컴퓨터에서 생성 코드를 컴파일하고 실행합니다. PIL 시뮬레이션은 개발 컴퓨터에서 소스 코드를 크로스 컴파일한 다음, 타깃 프로세서나 이와 동등한 명령어 세트 시뮬레이터로 오브젝트 코드를 다운로드하여 실행합니다.

SIL 및 PIL 시뮬레이션을 통해 다음과 같은 작업을 수행할 수 있습니다:

  • 모델과 생성된 코드가 수치적으로 동등한지 테스트합니다.

  • 코드 커버리지를 관찰합니다.

  • 코드 실행 프로파일링을 수행합니다.

SIL 및 PIL 시뮬레이션을 사용하는 이유는?

SIL 및 PIL 시뮬레이션을 활용하여 개발 과정의 초기 단계에서 결함을 테스트하고 수정합니다. 예를 들어, 표준 모드에서 소프트웨어 컴포넌트를 모델링하고 테스트할 수 있습니다. 그러면, 컴파일된 생성 코드를 실행하는 SIL 또는 PIL 시뮬레이션에서 해당 테스트 스위트를 재사용할 수 있습니다. 수치적 등가성을 확인하려면 일반 시뮬레이션 결과와 SIL 또는 PIL 시뮬레이션 결과를 비교합니다. 생성된 코드를 별도의 인프라에서 테스트하기 위해 Simulink® 환경에서 벗어날 필요가 없습니다.

다음 표는 SIL과 PIL을 사용할 수 있는 상황을 설명합니다.

상황사용
표준 모드 시뮬레이션을 위해 개발된 테스트 벡터를 재사용하여, 생성된(또는 기존) 코드의 수치적 출력을 검증함으로써 모델과 생성된 코드 간의 수치적 등가성을 테스트합니다. SIL/PIL Manager Verification WorkflowBack-to-Back Equivalence Testing (Simulink Test) 항목을 확인하십시오.SIL 및 PIL

코드 생성 과정에서 생성된 코드에 대한 메트릭 수집:

SIL 및 PIL

(IEC Certification Kit 라이선스가 필요합니다.)

ISO 26262-6, IEC 61508-3, IEC 62304, EN 50128 및 EN 50657 기능 안전 표준에 정의된 전체 소프트웨어 안전 수명 주기의 요구 사항에 따라 생성된 C/C++ 코드에 대한 검증 및 확인 활동을 수행합니다. IEC Certification Kit 모델 기반 설계 워크플로에서 수행되는 SIL 및 PIL 검증 활동에 대한 자세한 내용은 IEC Certification Kit 프로젝트 내의 임베디드 C/C++ 애플리케이션을 위한 참조 워크플로 (certkitiec_ecoder_workflow.docx/pdf) 아티팩트를 참조하십시오.

SIL 및 PIL

(DO Qualification Kit 라이선스가 필요합니다.)

DO-178C 및 DO-333 안전 표준의 관련 목표를 충족하는지 확인하기 위해 통합 프로세스의 산출물을 테스트합니다. 자세한 내용은 DO Qualification Kit 프로젝트에 있는 DO-178C용 모델 기반 워크플로 (qualkitdo_do178_workflow.pdf) 아티팩트를 참조하십시오.

SIL 및 PIL
타깃 하드웨어 없이, PIL을 대체할 수 있는 편리한 대안을 찾습니다.SIL

평가 보드나 명령어 세트 시뮬레이터 같은 타깃 하드웨어가 없는 경우:

  • 타깃 코드(예: 코드 대체 최적화) 및 레거시 코드의 동작을 검증합니다. What Is Code Replacement?What Is Code Replacement Customization? 항목을 참조하십시오.

  • 코드의 실행 속도와 메모리 사용량을 최적화합니다. 이 테이블에서 실행 프로파일링 및 스택 프로파일링 메트릭 수집에 관한 정보를 확인하십시오.

  • 컴파일러 설정 및 최적화가 미치는 영향을 조사합니다. 예를 들어, ANSI® C 오버플로 동작과의 차이점 등을 살펴봅니다.

일반적인 시뮬레이션 기법으로는 제한된 메모리 자원이나 타깃 플랫폼에 특화된 최적화 코드의 동작과 같이 하드웨어가 부과하는 제약 조건과 요구 사항을 고려하지 못합니다.


PIL

참고

SIL 및 PIL 시뮬레이션 모드는 모델 시뮬레이션 시간을 단축하기 위해 설계된 것이 아닙니다. 모델 시뮬레이션 속도를 높이고 싶다면, 고속 액셀러레이터 모드를 사용하십시오. 자세한 내용은 What Is Acceleration? 항목을 참조하십시오.

SIL 및 PIL 시뮬레이션의 작동 원리

SIL 또는 PIL 시뮬레이션에서는 최상위 모델 또는 모델의 일부에 대한 코드가 생성됩니다. SIL을 사용하면 이 코드는 개발 컴퓨터에서 컴파일되어 실행됩니다. PIL을 사용하면 코드가 타깃 하드웨어용으로 크로스 컴파일되어 타깃 프로세서에서 실행됩니다.

Simulink는 통신 채널을 통해 시뮬레이션의 각 샘플 간격마다 사용자의 컴퓨터 또는 타깃 프로세서에 있는 코드에 자극(stimulus) 신호를 전송합니다.

  • Simulink는 최상위 모델의 경우, 기본 작업 공간 또는 모델 작업 공간의 자극 신호를 사용합니다.

  • SIL 또는 PIL 모드에서 시뮬레이션할 모델의 일부만 지정한 경우, 모델의 나머지 부분은 Simulink에 남아 있으며 이 부분에 대해서는 코드 생성이 이루어지지 않습니다. 일반적으로 모델의 이 부분을 구성하여 하드웨어에서 실행되는 소프트웨어에 테스트 벡터를 제공하도록 합니다. 모델의 이 부분은 알고리즘의 다른 부분이나 알고리즘이 작동하는 환경을 나타낼 수 있습니다.

컴퓨터나 타깃 프로세서가 Simulink로부터 신호를 수신하면, 프로세서는 한 샘플 스텝에 대해 SIL 또는 PIL 알고리즘을 실행합니다. SIL 또는 PIL 알고리즘은 이 스텝에서 계산된 출력 신호를 통신 채널을 통해 Simulink로 반환합니다. 시뮬레이션의 한 샘플 주기가 완료되었으며, Simulink는 다음 샘플 구간으로 넘어갑니다. 이 과정이 계속 반복되면서 시뮬레이션이 진행됩니다. SIL 및 PIL 시뮬레이션은 실시간으로 실행되지 않습니다. 각 샘플 주기마다, Simulink와 오브젝트 코드는 I/O 데이터를 주고받습니다.

SIL 및 PIL 시뮬레이션 비교

상위 모델의 시뮬레이션 모델을 설정하거나 Model 블록에 대한 시뮬레이션 모드 파라미터를 설정하여 SIL 또는 PIL 시뮬레이션을 지정할 수 있습니다. 또한 SIL 및 PIL 시뮬레이션을 사용하여 상위 모델에서 생성된 코드의 일부인 서브시스템 코드에 대한 단위 테스트를 수행할 수도 있습니다(SIL/PIL 관리자를 사용한 서브시스템 코드 단위 테스트 참조).

SIL 시뮬레이션 중에 일어나는 일

  • 개발 컴퓨터에서 생성된 소스 코드의 동작을 테스트합니다. 시뮬레이션은 타깃 하드웨어용으로 컴파일된 코드를 테스트하지 않습니다. 코드는 개발 컴퓨터(즉, 타깃 하드웨어와는 다른 컴파일러와 프로세서 아키텍처를 사용함)용으로 컴파일되기 때문입니다.

  • 생성된 프로덕션 코드는 MATLAB® 프로세스와는 별도로, 개발 컴퓨터에서 별도의 프로세스로 컴파일 및 실행됩니다.

  • 실행 방식은 호스트 대 호스트 방식이며 비실시간입니다.

PIL 시뮬레이션 중에 일어나는 일

  • 실제 타깃 하드웨어나 명령어 세트 시뮬레이터에서 프로덕션 환경에 배포할 예정인 오브젝트 코드를 테스트합니다.

  • 생성된 프로덕션 코드를 개발 컴퓨터에서 타깃 플랫폼용으로 크로스 컴파일합니다. 오브젝트 코드가 다운로드되어 타깃 프로세서 또는 명령어 세트 시뮬레이터에서 실행됩니다.

  • 실행은 호스트/타깃 기반이며 비실시간 방식입니다.

SIL 및 PIL용 코드 인터페이스

예를 들어, 배포 가능한 단일 컴포넌트에 대해 최상위 모델 빌드를 수행할 때 독립 실행형 코드가 생성됩니다. 독립 실행형 코드를 컴파일하고 링크하여 독립 실행형 실행 파일로 만들거나, 다른 코드와 통합할 수 있습니다. 독립형 코드 인터페이스에 대한 자세한 내용은 Configure Generated C Function Interface for Model Entry-Point Functions 항목을 참조하십시오.

참조된 모델 계층 구조에 대한 코드를 생성하면, 소프트웨어는 최상위 모델에 대한 독립 실행형 코드를 생성하고, 참조된 각 모델에 대해서는 모델 참조 타깃이라고 하는 라이브러리 모듈을 생성합니다. 코드가 실행되면, 독립 실행형 실행 파일이 해당 모델 참조 타깃을 호출하여 참조된 모델의 출력을 계산합니다. 자세한 내용은 Build Model Reference Targets 항목을 참조하십시오.

코드 생성을 통해 생성된 코드를 기존 코드와 통합할 때는 독립형 코드를 사용하십시오. 독립형 코드의 인터페이스는 문서화되어 있기 때문입니다.

참고

SIL 및 PIL 시뮬레이션은 사용자 지정 코드 인터페이스를 직접 지원하지 않습니다. 이러한 인터페이스를 S-Function 형태로 Simulink에 통합할 수 있으며, 이를 위해 레거시 코드 툴, S-Function Builder 또는 직접 작성한 코드를 사용할 수 있습니다. 그런 다음 SIL 및 PIL 시뮬레이션을 통해 사용자 지정 코드를 검증할 수 있습니다.

이 테이블은 SIL 및 PIL 시뮬레이션에서 생성되는 인터페이스를 보여줍니다.

SIL/PIL 시뮬레이션코드 인터페이스
최상위 모델

SIL/PIL 시뮬레이션을 통해 독립형 코드 인터페이스가 생성됩니다. 해당 코드가 존재하면, 시뮬레이션은 모델에 대한 독립 실행형 코드를 호출합니다. 코드가 존재하지 않으면 시뮬레이션에서 독립형 코드를 생성합니다.

Model 블록

코드 인터페이스 블록 파라미터를 최상위 모델로 설정하면, SIL/PIL 시뮬레이션에서 독립형 코드 인터페이스가 생성됩니다. 시뮬레이션은 해당 모델에 대한 독립 실행형 코드가 존재할 경우 이를 호출합니다. 그렇지 않은 경우, 시뮬레이션은 slbuild('model') 명령을 사용하여 독립 실행형 코드를 생성합니다.

코드 인터페이스 블록 파라미터를 모델 참조로 설정하면, SIL/PIL 시뮬레이션에서 모델 참조 코드 인터페이스가 생성됩니다. 시뮬레이션에서는 Model 블록에 대한 모델 타깃이 존재할 경우 이를 호출합니다. 그렇지 않은 경우, 시뮬레이션은 slbuild('model', 'ModelReferenceCoderTarget') 명령을 사용하여 모델 기준 타깃을 생성합니다.

일정 수립 시 고려 사항

항목정보
인위적 대수 루프

SIL 및 PIL 시뮬레이션에는 일반 모드 시뮬레이션에서는 발생하지 않는 인위적인 대수 루프가 포함될 수 있습니다:

  • 코드 생성 최적화에서 단일 출력/업데이트 함수 옵션을 사용하면, 출력 및 업데이트 함수가 결합되어 직접적인 피드스루가 발생하기 때문에 인위적인 대수적 루프가 발생할 수 있습니다.

    단일 출력/업데이트 함수인위적 대수 루프 발생 최소화와 호환되지 않습니다(‘서브시스템 파라미터’ 대화 상자의 구성 파라미터 > 모델 참조 창에서). 인위적 대수 루프 발생 최소화는 생성된 코드를 출력 함수와 업데이트 함수 간에 분할하여 직접적인 피드스루를 방지함으로써, 인위적인 대수적 루프를 제거할 수 있도록 코드 생성을 지원합니다.

  • 가상 서브시스템에 대한 코드를 생성하는 경우, 코드 생성 기능은 해당 서브시스템을 아토믹 단위로 간주하여 그에 따라 코드를 생성합니다. 이렇게 생성된 코드는 모델의 실행 동작을 변경할 수 있습니다. 예를 들어, 가상 서브시스템을 아토믹 단위로 취급하면 인위적인 대수 루프가 발생할 수 있다. 실행 동작의 변화는 시뮬레이션 동작에 불일치를 초래할 수 있습니다.

    모델에 대해 일관된 시뮬레이션 및 실행 동작을 보장하려면 가상 서브시스템을 Atomic Subsystem으로 선언하십시오.

자세한 내용은 다음을 참조하십시오.

피드백 루프 내의 외부 함수

모델에 함수 호출 서브시스템이 포함되어 있고, 컨텍스트에 의존적인 입력(예: 피드백 신호)을 갖는 서브시스템을 내보내는 경우, 생성된 코드를 사용한 SIL/PIL 시뮬레이션 결과와 모델의 표준 모드 시뮬레이션 결과가 서로 다를 수 있습니다. SIL/PIL 시뮬레이션과 표준 모드 시뮬레이션에서 동일한 결과를 얻기 위한 한 가지 방법은 모델에 Function-Call Feedback Latch 블록을 사용하는 것입니다. 컨텍스트에 따라 달라지는 입력을 문맥과 무관하게 만들 수 있습니다.

컨텍스트 종속 입력 구성 파라미터를 경고로 설정하면, Embedded Coder는 내보낸 함수 호출 서브시스템의 컨텍스트 의존적 입력을 식별하는 경고를 생성합니다.

자세한 내용은 다음을 참조하십시오.

가져온 데이터 및 추가로 생성된 코드

SIL 또는 PIL 시뮬레이션은 모델에서 생성된 코드를 수정하지 않습니다. 가져온 데이터를 사용하는 경우, SIL 또는 PIL 시뮬레이션은 SIL 또는 PIL 타깃 애플리케이션의 컴파일 및 링크를 지원하는 데 필요한 추가 코드를 생성합니다. 추가로 생성된 코드는 모델에서 지정한 인터페이스에 해당합니다.

이 섹션에서는 다음 내용을 다룹니다:

  • 가져온 데이터의 경우, SIL 또는 PIL 시뮬레이션에서 저장 방식을 정의하는 경우와 사용자가 직접 저장 방식을 정의해야 하는 경우.

  • SIL 또는 PIL 시뮬레이션 시 추가 코드가 생성되는 인터페이스

SIL 또는 PIL 시뮬레이션에 가져온 데이터

SIL 및 PIL 시뮬레이션에서는 가져온 데이터 정의로 스토리지 클래스를 지정하는 신호, 파라미터 및 데이터 저장소를 사용할 수 있습니다. 이 시뮬레이션에서는 다음 항목과 관련된 가져온 데이터의 저장공간을 정의합니다:

  • 컴포넌트의 루트 레벨(I/O 경계)에 있는 신호들.

  • 기본 작업 공간, 모델 작업 공간 및 데이터 사전의 파라미터.

  • 전역 데이터 저장소.

SIL 및 PIL 시뮬레이션에서는 다른 가져온 데이터에 대한 저장공간을 정의하지 않습니다. 예를 들어, 시뮬레이션에서는 다음 항목과 관련된 가져온 데이터에 대한 저장공간을 정의하지 않습니다:

  • 내부 신호(I/O 경계에 속하지 않는 신호). 단, 내부 신호의 데이터가 포인터를 통해 가져온 구조체에 포함되어 있는 경우, 시뮬레이션에서 저장공간을 정의한다는 점에 유의하십시오.

  • 로컬 데이터 저장소.

이러한 경우에는 테스트 대상 컴포넌트에 포함된 사용자 지정 코드나 PIL rtw.pil.RtIOStreamApplicationFramework API를 통해 저장소를 정의하십시오.

Tunable Parameters and SIL/PIL 항목도 참조하십시오.

추가 코드 생성을 수행하는 인터페이스

이 테이블은 SIL 또는 PIL 시뮬레이션 시 인터페이스에 대한 추가 코드 생성이 발생하는 시나리오를 설명합니다.

시나리오세부 정보
GetSet 사용자 지정 스토리지 클래스

SIL 및 PIL 시뮬레이션은 GetSet 사용자 지정 스토리지 클래스를 지원합니다. SIL/PIL 테스트 하네스는 시뮬레이션 중에 사용되는 GetSet 함수에 대한 C 언어 정의 파일을 제공합니다. 자세한 내용은 Access Data Through Functions with Storage Class GetSet 항목을 참조하십시오.

Other 유형의 사용자 지정 스토리지 클래스

유형Other로 설정된 사용자 지정 스토리지 클래스에 대해 SIL 및 PIL 지원을 활성화하려면, 해당 사용자 지정 스토리지 클래스에 대한 사용자 지정 특성 클래스를 생성하고, 이 사용자 지정 특성 클래스를 true로 설정된 부울 속성 SupportSILPIL와 연결하십시오.

classdef CSCOtherAttributes < Simulink.CustomStorageClassAttributes
  properties(PropertyType = 'logical scalar')
    SupportSILPIL = true;
  end
end

사용자 지정 특성에 대한 자세한 내용은 TLC 코드를 작성하여 생성된 코드를 더욱 세밀하게 사용자 지정하기Finely Control Data Representation by Writing TLC Code for a Storage Class 항목을 참조하십시오.

SIL 또는 PIL 애플리케이션 인터페이스를 구축하기 위해, 코드 생성기는 관련 사용자 지정 TLC 파일에 있는 DataAccessClassAccess 함수를 호출하여 필요한 정보를 가져옵니다. 코드 생성기는 추출된 정보를 빌드 폴더 내의 빌드 아티팩트에 저장합니다.

그룹화되지 않은 사용자 지정 스토리지 클래스의 경우:

  • 코드 생성기는 DataAccess를 호출하며, 이때 request 인수는 define, declare, layout, contents, address 또는 set 값을 취합니다.

  • 코드 생성기는 다음 조건 중 하나가 충족될 경우, DataAccess(record, "define", "", "")가 반환한 문자열을 사용하여 SIL 또는 PIL 애플리케이션에서 변수를 정의합니다:

    • 이 신호 또는 파라미터의 데이터 유효 범위는 Imported입니다.

    • 이 모델은 모델 참조 코드 인터페이스를 사용합니다.

    • 이 모델은 최상위 모델 코드 인터페이스를 사용하며, EnableDataOwnershipon이고, 사용자 지정 스토리지 클래스의 Owner 특성은 비어 있지 않으며 현재 모델의 이름과 같지 않습니다.

  • 코드 생성기는 다음 조건이 모두 충족될 경우, DataAccess(record, "declare", "", "")가 반환한 문자열을 사용하여 SIL 또는 PIL 애플리케이션에서 변수를 선언합니다:

    • 이 모델은 최상위 모델 코드 인터페이스를 사용합니다.

    • 이 신호 또는 파라미터는 Exported 스토리지 클래스를 사용합니다.

    • EnableDataOwnershipoff이거나, 아니면 EnableDataOwnershipon이고 사용자 지정 스토리지 클래스의 Owner 특성이 비어 있거나 모델 이름과 동일합니다.

    • 코드 패키징은 해당 변수가 model.h 또는 model.h에 의해 포함되는 헤더 파일에 선언되지 않도록 구성되어 있습니다.

그룹화된 사용자 지정 스토리지 클래스의 경우:

  • 코드 생성기는 request 인수를 layout, address 또는 set 값으로 설정하여 DataAccess를 호출합니다.

  • 코드 생성기는 groupTypeDeclDefn의 값을 취해 request 인수와 함께 ClassAccess를 호출합니다.

  • 다음 중 하나에 해당하는 경우, 그룹화된 유형(struct)의 정의와 그룹화된 변수의 extern 선언을 반드시 제공해야 합니다:

    • 이 신호 또는 파라미터의 데이터 유효 범위는 Imported입니다.

    • 이 모델은 모델 참조 코드 인터페이스를 사용합니다.

    • 이 모델은 최상위 모델 코드 인터페이스를 사용하며, EnableDataOwnershipon이고, 사용자 지정 스토리지 클래스의 Owner 특성은 비어 있지 않으며 현재 모델의 이름과 같지 않습니다.

    HeaderFile 특성을 사용하거나 model.h 파일을 통해 포함하는 사용자 지정 코드를 활용하여, 사용자 지정 스토리지 클래스와 관련된 헤더 파일에 정의와 선언을 제공하십시오. SIL 또는 PIL 애플리케이션에서 변수를 정의하기 위해, 코드 생성기는 ClassAccess(record, "groupTypeDeclDefn")가 반환한 문자열을 사용합니다.

  • 정적 초기화는 데이터 범위가 Exported일 때 생성되는 순서와 다른 struct 요소의 순서를 가정할 수 있습니다. 코드 생성기가 ClassAccess(record, "groupTypeDeclDefn")를 조회할 때, 사용자 지정 스토리지 클래스의 데이터 초기화 특성을 일시적으로 None 값으로 재정의합니다.

코드 생성기는 SIL 또는 PIL 애플리케이션이 코드 내의 변수에 주소를 통해 액세스할 수 있는지 여부를 판단하기 위해 DataAccess(record, "layout", "", "")가 반환하는 요소들을 사용합니다. 개발 컴퓨터와 타깃 하드웨어 간에 입력 또는 출력 포트, 조정 가능한 파라미터, 또는 전역 데이터 저장소의 메모리 값을 전송하는 기능을 애플리케이션에 구현하기 위해, 코드 생성기는 다음의 출력을 사용합니다:

  • 반환된 첫 번째 요소가 scalar, vector, row-mat 또는 col-mat인 경우, DataAccess(record, "address", idx, reim)

  • 반환된 첫 번째 요소가 other인 경우,.DataAccess(record, "contents", idx, reim) (또는 DataAccess(record, "set", idx, reim))

코드 생성기는 row-matcol-mat의 경우, 행 우선 형식으로 각각 행렬이 저장되어 있다고 가정합니다. 이 가정은 모델의 나머지 부분에 대한 배열 레이아웃과 무관합니다. 코드 생성기는 사용자 지정 스토리지 클래스에 의해 구현된 스토리지의 배열 레이아웃이 모델의 나머지 부분과 다를 경우, 해당 사용자 지정 스토리지 파일에 연결된 TLC 파일이 필요한 변환을 수행한다고 가정합니다.

Other 유형의 사용자 지정 스토리지 클래스와 연관된 사용자 지정 TLC 파일을 생성하여 (요청된 코드 조각을 반환하는 것 외에도) 다른 기능을 수행할 수 있습니다. 예를 들어, 사용자 지정 파일에 직접 쓰기를 수행하거나 기본 작업 공간의 상태를 변경하는 MATLAB 함수를 호출할 수 있습니다. DataAccess 또는 ClassAccess가 호출될 때마다 이러한 함수를 항상 실행하고 싶지 않다면, LibIsAccessingCustomDataForSILPIL(record) TLC 함수를 사용하여 타깃 코드 생성과 SIL 또는 PIL 애플리케이션 구축을 위한 코드 조각 요청을 구분하십시오. 예를 들면 다음과 같습니다.

...
%case "contents"
  %if !LibIsAccessingCustomDataForSILPIL(record)
    %matlab functionWithSideEffects()
  %endif
%return LibDefaultCustomStorageContents(record, idx, reim)
...

기타 사용자 지정 스토리지 클래스의 제한 사항도 참조하십시오.

AUTOSAR 런타임 환경

최상위 모델 및 Model 블록 SIL 및 PIL 시뮬레이션을 사용하여 AUTOSAR 소프트웨어 컴포넌트에 대한 모델 기반 테스트를 수행할 수 있습니다. 이 소프트웨어는 AUTOSAR 소프트웨어 컴포넌트에 대해 생성된 코드를 해당 컴포넌트 전용의 기본 AUTOSAR 런타임 환경(RTE)과 연동하여 테스트 애플리케이션을 생성합니다. 이 애플리케이션은 AUTOSAR 소프트웨어 컴포넌트가 수행하는 AUTOSAR API 호출을 테스트합니다.

참조 모델이 포함된 최상위 AUTOSAR 소프트웨어 컴포넌트의 경우, 최상위 모델 또는 Model 블록에 대한 SIL 또는 PIL 시뮬레이션을 실행할 수 있습니다. 시뮬레이션에서 이 소프트웨어는 다음과 같은 기능을 수행합니다:

  • 참조된 모델을 컴파일하기 전에 AUTOSAR RTE 헤더 파일을 생성합니다.

  • 참조된 모델의 컴파일에 필요한 RTE 포함 경로를 제공합니다.

AUTOSAR 하위 컴포넌트 또는 AUTOSAR 소프트웨어 컴포넌트가 참조하는 모델에 대한 단위 수준 테스트를 수행하려면 Model 블록 SIL 또는 PIL 시뮬레이션을 사용하십시오. Model 블록에서 시뮬레이션 모드SIL(Software-in-the-Loop) 또는 PIL(Processor-in-the-Loop)로 설정하고, 코드 인터페이스모델 참조로 설정하십시오. AUTOSAR 소프트웨어 컴포넌트에서 참조되는 매핑된 AUTOSAR 하위 컴포넌트의 예제는 Configure Subcomponent Data for AUTOSAR Calibration and Measurement (AUTOSAR Blockset) 항목을 참조하십시오.

이 경우, 시뮬레이션을 실행하기 전에 RTE 헤더 파일을 생성하기 위해 상위 컴포넌트를 빌드해야 합니다. 상위 컴포넌트를 빌드하지 않으면 SIL 또는 PIL 시뮬레이션이 실패합니다. slbuild 함수를 사용하고 "ModelReferenceCoderTarget"를 지정하면 서브컴포넌트 모델을 빌드할 수 있습니다. 예를 들면 다음과 같습니다.

slbuild("autosar_subcomponent","ModelReferenceCoderTarget");

자세한 내용은 Verify AUTOSAR Code with SIL and PIL Simulations (AUTOSAR Blockset) 항목을 참조하십시오.

참고 항목

도움말 항목