XCC

A Universal Communication Interface Composer for Heterogeneous Systems

Nikola Stojkov and Igor Dejanović
University of Novi Sad, Serbia

The Integration Challenge

Heterogeneous Systems with multiple CPU cores, accelerators, FPGA, and specialized processors

Fragmented Communication Design scattered across code, config files, and architectural diagrams

Multiple Teams & Platforms (Linux, RTOS, bare-metal) → inconsistent communication interfaces

Communication is critical but difficult to design systematically

Static vs. Dynamic Trade-off

Dynamic

  • Flexible for changes
  • Runtime overhead
  • Higher latency
  • Unpredictable

Static (Compile-time)

  • Optimizable
  • Low overhead
  • Predictable latency
  • Analyzable

✓ Desired: Static design with architectural flexibility

XCC: The Solution

XCC Composer Architecture

Domain-Specific Language (DSL) for systematic communication composition

OR UML Models via XMI import

Captures: Connectivity + Contracts + Profiles

XCC: DSL Core Aspects

① Architecture Description (ADL)

Define system topology and component connectivity

② Interface Description (IDL)

Specify message formats, access control, and integrity

③ Hardware Mapping (HML)

Capture communication profiles and performance constraints

Architecture Description (ADL)

ADL Example

Define system components and their communication topology

Interface Definition (IDL)

IDL Example

Specify communication contracts and message structures

Hardware Modeling (HML)

HML Example

Capture communication profiles and platform-specific performance constraints

From Specification to XCC-AST

DSL

TextX syntax for DSL grammar • UML Tags mark XCC components

DSL Grammar Examples

ADL Grammar


							ComponentDef:
								name=ID ':' 'Component' '{'
									'Type' ':' type=ID ','
									'Platform' ':' platform=ID ','
									'Function' ':' function=ID
								'}'
							ConnectionDef: 
								'connection' name=ID '{'
									'from' src=[ComponentDef] 
									'to' dst=[ComponentDef]
									'interface' ':' interface=ID
									'profile' ':' profile=ID '}'
						

IDL Grammar


							Interface: 'interface' name=ID '{'
								data=DataStructures?
								access=Access
								integrity=Integrity? '}'
							StructDef: 
								name=ID '{' fields+=Field* '}'
							Field: 
								type=Type name=ID array=ArraySpec?
							Access: 'access' '{'
								(readLines+=ReadAccess | 
								writeLines+=WriteAccess)+ '}'
						

HML Grammar


								SharedMemory:
									'SharedMemory' name=ID? '{'
										items+=Attribute* '}'
								Attribute: 
									key=ID ':' val=Value
								Value: 
									Size | Hex | STRING | 
									Boolean | INT | ID
								Size: value=INT unit=Unit
								Unit: 'B'|'kB'|'MB'|'GB'
							

From XCC-AST to Code Generation

XCC-AST: Abstract syntax tree with communication semantics in PKL and JSON formats for downstream code generation.

Traceability from spec to generated code

Optimized code: Static resource allocation, predictable patterns, platform-specific

Key Benefits

✓ Traceability: Full mapping from spec to generated code

✓ Minimizing integration overhead: No manual code changes for communication in heterogeneous systems

✓ Systematic Design: Single source of truth for communication

✓ Late Changes Safe: Architectural evolution without breaking system

XCC: Making it Practical

XCC bridges the gap between architectural specification and implementation reality trough code generation

Result: Teams can design communication interfaces systematically, validate them early, and evolve them safely

Questions?
nikola.stojkov@outlook.com