제품 개요
이 장에서 다루는 것
PAIO가 어떤 제품인지, 무엇을 할 수 있는지, 데이터가 어떤 구조로 흐르는지 안내합니다. 개별 기능의 조작 절차는 다루지 않으며, 어느 문서로 가면 되는지만 알려 드립니다. 대상 독자는 PAIO를 처음 접하는 사용자이며, 선행 조건은 없습니다. 수치·버전·목록 같은 사양은 02. 제품 기본 사양에 모아 두었으며, 여기에 나오는 용어의 뜻은 21. 용어 사전에서 찾을 수 있습니다.
1.1 PAIO란
PAIO는 AI를 내장한 올인원 AUTOSAR / SDV(Software Defined Vehicle) 개발 IDE입니다. Electron 기반 데스크톱 애플리케이션 하나에서 AUTOSAR Classic Platform과 Adaptive Platform 개발을 모두 다룹니다.
기존에는 네트워크 설계 도구, 시그널 DB 도구, SWC 설계 도구, BSW 설정 도구, 코드 IDE를 각각 따로 사용하면서 그 사이를 ARXML 파일로 오가야 했습니다. PAIO는 이 전 과정을 하나의 워크스페이스, 하나의 데이터 모델 위에 올립니다.
제품의 기본 정보는 다음과 같습니다.
| 구분 | 내용 |
|---|---|
| 제품명 | PAIO |
| 공급사 | PopcornSAR Co., Ltd. |
| 제품 페이지 | https://autosar.io/products/paio |
| 지원 | https://autosar.io/support · 문의 https://autosar.io/support/qna |
| 라이선스 | PopcornSAR PAIO License (상용) |
PAIO는 로그인해야 사용할 수 있습니다. 메인 화면(에디터·탐색기·메뉴가 있는 레이아웃 전체)은 인증이 끝난 뒤에만 만들어지므로, 로그인 전에는 로그인 화면 외에 아무것도 보이지 않습니다. 또한 라이선스 검증이 끝나기 전까지 기능 게이트는 잠금(읽기 전용) 상태를 기본값으로 둡니다. 자세한 내용은 03. 설치 · 로그인 · 라이선스에서 확인할 수 있습니다.
먼저 알아 둘 여덟 개 용어
시작하는 데 필요한 용어는 많지 않습니다. 아래 여덟 개면 01~05를 읽으시는 데 충분하며, 나머지는 21. 용어 사전에서 필요할 때 찾아보시면 됩니다.
| 용어 | 뜻 |
|---|---|
| ECU | 차량에 들어가는 제어기 하나입니다 |
| HPC | 고성능 컴퓨터입니다. Adaptive Platform 소프트웨어가 여기에서 동작합니다 |
| 버스 / 클러스터 | ECU들을 연결하는 통신망입니다. CAN, LIN, FlexRay, Ethernet이 있습니다 |
| 시그널 (Signal) | 버스로 오가는 데이터 한 조각입니다. 예를 들어 차량 속도값입니다 |
| 프레임 (Frame) | 시그널들을 담아 실제로 버스에 흘려보내는 묶음입니다 |
| SWC | 소프트웨어 컴포넌트입니다. 기능 하나를 담당하는 소프트웨어 단위입니다 |
| 포트 (Port) | SWC가 데이터를 주고받는 창구입니다 |
| ARXML | AUTOSAR 표준 파일 형식입니다. 다른 회사, 다른 도구와 주고받을 때 씁니다 |
1.2 무엇을 할 수 있나 — 기능 지도
모델링 에디터 (8종)
에디터를 처음 고르실 때는 하려는 일에서 출발하시면 됩니다.
| 하려는 일 | 여는 에디터 |
|---|---|
| 차량 안에 ECU가 몇 개 있고 어떤 버스로 연결되는지 그립니다 | IVC |
| 그 버스로 어떤 데이터가 오가는지 정의합니다 | Signal |
| 소프트웨어를 어떤 컴포넌트로 나눌지 설계합니다 | VFB |
| 컴포넌트끼리 주고받을 데이터의 형식을 정합니다 | Interface, DataType |
| 어떤 컴포넌트를 어떤 ECU에 올릴지 정합니다 | System |
| ECU 기본 소프트웨어(BSW)의 설정값을 만듭니다 | Module Definition, Module Configuration |
각 에디터가 실제로 무엇을 편집하고 어느 파일에 저장하는지는 아래에 정리했습니다.
프로젝트 탐색기의 design 폴더 아래에는 System 노드와 Module 노드가 있습니다.
System 을 펼치면 IVC / VFB / Interface / DataType / Signal 노드가
나오고, Module 을 펼치면 Definition / Configuration 노드가 나옵니다. 각 노드를
더블클릭하면 해당 에디터가 열립니다.
| 에디터 | 편집 대상 | 저장 파일 | 문서 |
|---|---|---|---|
| IVC (In-Vehicle Network) | 차량 네트워크 토폴로지 — ECU, HPC, 이더넷 스위치, 커넥터, 컨트롤러, 통신 클러스터, 물리 채널 | IVC 모델 | 06 |
| Signal | 프레임 / PDU / 시그널 사전 | Signal 모델 | 07 |
| VFB | SWC 컴포지션 다이어그램, 포트, 커넥터, 내부 동작, AP Machine 설정 | VFB 모델 + SWC 정의 | 08 |
| Interface | 포트 인터페이스 7개 카테고리(Service, Sender-Receiver, Client-Server, Mode-Switch, Adaptive, Error Domain, Mapping)와 서비스 배포 | Interface 모델, Service 모델 | 09 |
| DataType | 애플리케이션/구현 데이터 타입, 단위 | DataType 모델 | 10 |
| System | 시스템 정보, SWC↔ECU 매핑, 통계 | System 모델 | 11 |
| Module Definition | ECUC 모듈 정의(스키마) | 모듈 정의 | 12 |
| Module Configuration | ECUC BSW 모듈 설정값 | 모듈 설정 | 12 |
이 8종 외에 파일을 여는 뷰어/에디터가 더 있습니다. 코드 파일, Markdown 문서(라이브 프리뷰 포함), 이미지, 일반 텍스트, HTML 미리보기, 그리고 AI 워크플로 화면입니다. 자세한 사용법은 16. 코드 편집 · 빌드 · 터미널 · 문서와 15. AI 어시스턴트에서 확인할 수 있습니다.
design아래의 Module 노드를 더블클릭하면 Coming Soon 안내만 있는 빈 탭이 열립니다. 노드를 펼쳐 그 아래 Definition / Configuration 을 더블클릭하세요. 이 두 노드는 트리에서 더 펼쳐지지 않으며, 모듈 목록은 에디터 안에 있습니다.
모델이 만들어지는 시점
프로젝트를 새로 만들면 design 트리에는 System · VFB · IVC 셋만 준비됩니다. Signal,
Interface, DataType, Service, IDS와 Module 아래의 내용은 해당 에디터에서 처음 저장하거나
임포트가 그 내용을 만들어 낼 때 생깁니다. 따라서 새 프로젝트에 셋만 보이는 것은 정상이며,
손실이 아닙니다.
VFB 에디터는 다이어그램 배치를 별도 파일에 둡니다. 컴포지션 하나마다
design/SWC/Layout/<컴포지션명>.vfb.layout 이 만들어지고, 여기에 위치·크기·포트 좌표가
들어갑니다. SWC 본문은 종류별 폴더로 나뉩니다. 폴더는 Composition, Application,
AdaptiveApplication, ComplexDeviceDriver, Service, EcuAbstraction, SensorActuator 의
7개입니다. AP Machine 설정은 Module ▸ Machine 아래에 따로 보관됩니다.
개발 환경
모델링과 별개로, 애플리케이션 코드를 작성하고 빌드할 때 사용하는 기능입니다.
| 기능 | 설명 | 문서 |
|---|---|---|
| 내장 코드 IDE | Monaco 기반 C/C++/Rust 편집, clangd·rust-analyzer LSP, GCC/CMake/Cargo 빌드 스트리밍 | 16 |
| 통합 터미널 | xterm + node-pty. 로컬 PTY, SSH 셸, 컨테이너 exec, WSL 지원 | 16 |
| 문서 편집 | Markdown 에디터 + 라이브 프리뷰, Mermaid·PlantUML·Draw.io·ZenUML 다이어그램 | 16 |
| 원격 개발 | SSH / Docker Dev Container / WSL 연결, 원격에 LSP 자동 배포 | 17 |
변환 · 검증 · 자동화
모델을 외부 포맷과 주고받거나, 규칙에 맞는지 검사하거나, 초안을 자동으로 만들고 싶을 때 사용하는 기능입니다.
| 기능 | 설명 | 문서 |
|---|---|---|
| ARXML 임포트/익스포트 | AUTOSAR ARXML 양방향 왕복 변환. 재임포트 시 병합 충돌 해결 UI 제공 | 13 |
| DBC 임포트 | CAN 데이터베이스 → Signal 모델 | 13 |
| ECU / Machine Extract | 한 노드에서 참조로 도달할 수 있는 요소만 잘라낸 부분 ARXML 생성 | 13 |
| ECUC 자동 생성 | IVC + Signal 모델에서 BSW 모듈 설정 생성 (Can, CanIf, Com, EcuC, PduR) | 12 |
| Validation | AUTOSAR 제약(constr) 규칙 실시간 검사, 위반 클릭 시 해당 에디터로 이동 | 14 |
| AI 채팅 | 자연어로 모델을 생성·수정. 프로바이더 5종(Claude [OPUS], Claude [GLM], Gemini, Codex, Ollama) | 15 |
| QuickStart 워크플로 | 도메인 템플릿(7개 도메인 24개)을 골라 변수만 채우면 프로젝트 전체를 단계별로 생성 | 15 |
1.3 설계 철학 — IO-First 아키텍처
PAIO의 가장 중요한 구조적 특징은 AUTOSAR가 원본이 아니라는 것입니다.
┌───────────────────────────┐
ARXML ──import──► │ │ ──export──► ARXML (R25-11)
DBC ──import──► │ IO Model │ ──export──► DataType ARXML
│ 포맷 중립 · 단일 진실 │ ──export──► ECUC ARXML
│ │
└───────────┬───────────────┘
│
모든 에디터 · AI · 검증이
이 모델만 읽고 쓴다
- **IO Model**이 1차 데이터 모델입니다. 사람이 읽을 수 있는 텍스트로 저장되므로 형상 관리에 그대로 올릴 수 있습니다.
- AUTOSAR(ARXML)와 DBC는 그 위에 얹힌 변환 계층(converter) 입니다. 원본이 아닙니다.
- 에디터·AI·검증은 모두 이 모델만 봅니다. 변환기를 바꿔도 에디터는 그대로 사용할 수 있습니다.
- 임포트 → 편집 → 익스포트 → 재임포트 의 왕복 변환을 지원합니다. 다만 이것이 임의의 ARXML이 무손실로 왕복한다는 뜻은 아닙니다.
다이어그램 좌표는 ARXML로 나가지 않는다
노드 위치·크기 같은 화면 배치 정보는 프로젝트 안에만 남습니다. IVC 다이어그램의 좌표는
IVC 모델에, VFB 다이어그램의 좌표는 design/SWC/Layout/<컴포지션명>.vfb.layout 에
저장됩니다. 익스포트한 ARXML에는 좌표가 들어가지 않습니다. 따라서 내보낸 ARXML을 다른
도구나 다른 프로젝트에서 다시 읽어도 화면 배치는 복원되지 않습니다. 이 때문에 다음 두 동작이
서로 다르게 보입니다.
| 상황 | 동작 |
|---|---|
| 빈 프로젝트에 ARXML을 처음 임포트 | 좌표가 ARXML에 없으므로 임포터가 그리드 위에 자동 배치합니다 |
| 이미 모델이 있는 프로젝트에 다시 임포트 | 병합 시 position / size 는 내용 비교에서 제외되므로, 화면에서 옮겨 둔 기존 좌표가 그대로 유지됩니다. 노드를 옮기기만 한 것은 충돌로 잡히지 않습니다 |
좌표와 달리, 표준에 자리가 없는 매핑 정보는 ARXML의 SDG(Special Data Group)로 나갑니다
(13.3.6 참조).
1.4 편집 이력과 다중 프로젝트
- 프로젝트 편집 이력(Undo/Redo/저장 여부)은 하나의 타임라인 이라는 단일 타임라인이 관리합니다. 에디터마다 별도 Undo 스택을 갖지 않으므로, Edit 메뉴의 Undo가 어느 에디터에서 한 편집이든 일관되게 되돌립니다.
- 하나의 PAIO 창에 여러 프로젝트의 에디터가 동시에 열릴 수 있습니다. 이때 Undo/Redo와 메뉴의 Save All 은 현재 활성 프로젝트로 한정됩니다. 다만 앱을 종료할 때는 열려 있는 모든 프로젝트의 변경분을 저장하므로, 다른 프로젝트의 편집이 종료로 사라지지 않습니다.
- 탭의 더티 표시(점)만은 프로젝트 범위의 영향을 받지 않습니다. 어느 프로젝트가 활성이든 추적 중인 파일마다 따로 계산되므로, 비활성 프로젝트의 탭에도 저장하지 않은 변경이 그대로 표시됩니다.
1.5 AUTOSAR 지원 범위
- Classic Platform: ECU 인스턴스, 통신 클러스터(CAN / CAN FD / LIN / FlexRay / Ethernet), 프레임·PDU·시그널, SWC와 컴포지션, 포트 인터페이스, 데이터 타입, 시스템 매핑, ECUC BSW 모듈 정의·설정, NM, Transport Protocol(CanTp/LinTp), Global Time.
- Adaptive Platform: Machine Design, Machine 설정(Function Group, Process, 10종 모듈), Adaptive Application(Executable/Process), 서비스 인터페이스·배포(SOME/IP, DDS), Error Domain, PHM, State Management, Persistency, Crypto, IDSM, UCM, Time Sync, DLT.
- Machine 설정의 10종 모듈: LOG(Log and Trace), CM(Communication Management), SM(State Management), NM(Network Management), PHM(Platform Health Management), TS(Time Synchronization), CRY(Cryptography), PER(Persistency), IDS(Intrusion Detection), UCM(Update and Configuration Management).
- 출력 스키마: AUTOSAR R25-11(
AUTOSAR_00054.xsd) 네임스페이스로 고정 출력합니다.
FlexRay는 모델·변환 계층에서는 다루지만 IVC 에디터에서는 화면에 나타나지 않습니다. 자세한 조건은 02. 제품 기본 사양 2.5절과 2.12절에 정리해 두었습니다.
1.6 대표 작업 흐름
자주 수행하는 네 가지 작업의 흐름을 순서대로 안내합니다.
A. 기존 ARXML로 시작하는 경우
Project ▸ Open Workspace...(Ctrl+O)로 워크스페이스 폴더를 엽니다. 프로젝트 탐색기에 그 폴더 아래의 프로젝트 목록이 나타납니다.Project ▸ New Project(Ctrl+N)로 프로젝트를 만듭니다. 이름을 입력하면 프로젝트 폴더와 고정 폴더들과 기본 모델 세 개가 생성됩니다.- 프로젝트 노드를 우클릭하고 Import 를 선택한 뒤 ARXML(또는 DBC) 파일을 고릅니다. 여러 파일을 한 번에 선택할 수 있습니다. 임포트를 시작하기 전에, 열려 있는 에디터의 저장하지 않은 편집이 먼저 디스크에 저장됩니다.
- 기존 모델과 충돌하는 항목이 있으면 충돌 해결 다이얼로그가 열립니다. 항목별로 어느 쪽을 남길지 선택합니다.
design아래 각 모델 노드를 더블클릭해 에디터에서 결과를 확인하고 수정합니다.- 프로젝트 노드를 우클릭하고 Export 를 선택합니다. 별도 저장 위치 대화상자 없이
<프로젝트>/export/폴더에 ARXML 파일들이 바로 만들어집니다. - 결과를 확인합니다.
export폴더를 펼치면<프로젝트명>_System.arxml등 생성된 파일을 볼 수 있습니다.
B. 백지에서 시작하는 경우
- 워크스페이스를 열고 프로젝트를 만듭니다.
- IVC 에디터에서 ECU/HPC를 배치하고, 노드를 우클릭해 Add Connector 와 Add Controller 로 커넥터·컨트롤러를 붙입니다. 같은 프로토콜의 커넥터 두 개를 캔버스에서 이으면 그 사이에 통신 클러스터가 새로 만들어집니다. 세 번째 노드부터는 커넥터를 기존 클러스터에 연결합니다.
- Signal 에디터에서 프레임·PDU·시그널을 정의하고 PDU에 시그널을 매핑합니다.
- Interface / DataType 에디터에서 포트 인터페이스와 데이터 타입을 정의합니다.
- VFB 에디터에서 컴포지션과 SWC를 배치하고 포트를 연결한 뒤, ECU/HPC에 매핑합니다.
- Validation 패널을 열어 제약 위반을 정리합니다. 위반 행을 클릭하면 그 요소를 소유한 에디터가 열립니다. 대부분은 요소까지 선택·강조되지만, 요소를 찾지 못하면 에디터만 열립니다.
- ECUC가 필요하면 IVC 에디터에서 ECU 노드를 선택하고, 오른쪽 속성 패널의 ECUC 절에서 모듈을 고른 뒤 Generate ECUC 를 누릅니다. 참고로 이 버튼은 해당 ECU에 CAN 커넥터가 없으면 비활성입니다.
- 프로젝트 노드 우클릭 ▸ Export 로 ARXML을 만듭니다.
C. AI로 초안을 만드는 경우
Project ▸ Quick Start를 실행합니다. QuickStart 화면이 새 탭으로 열립니다.- 도메인 템플릿을 고릅니다. 도메인은 Body, Powertrain, ADAS, Infotainment, Chassis, Gateway, Diagnostics 7종이고 템플릿은 모두 24종입니다.
- 변수를 채우고 Start Generation 을 누릅니다.
- 단계별 생성이 끝나면 각 에디터에서 결과를 검토하고 수정합니다.
자세한 절차는 15. AI 어시스턴트에서 확인할 수 있습니다.
D. 한 ECU 분량만 뽑아 협력사에 전달하는 경우
ECU 하나 분량만 잘라 협력사에 전달해야 할 때는 Extract 기능을 사용합니다.
- IVC 에디터를 열고 대상 노드를 캔버스에서 우클릭합니다.
- ECU 노드에는 Extract ECU, HPC 노드에는 Extract Machine 항목이 나타납니다. 다른 종류의 노드(커넥터·컨트롤러·클러스터)에는 이 항목이 없습니다.
- 항목을 선택하면 그 노드에서 참조로 도달 가능한 부분만 잘라낸 ARXML이
<프로젝트>/export/<노드명>/아래에 만들어집니다.
자세한 내용은 13. 임포트 · 익스포트에서 확인할 수 있습니다.