Nikola Stojkov and Igor Dejanović
University of Novi Sad, Serbia
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
✓ Desired: Static design with architectural flexibility
Domain-Specific Language (DSL) for systematic communication composition
OR UML Models via XMI import
Captures: Connectivity + Contracts + Profiles
Define system topology and component connectivity
Specify message formats, access control, and integrity
Capture communication profiles and performance constraints
Define system components and their communication topology
Specify communication contracts and message structures
Capture communication profiles and platform-specific performance constraints
TextX syntax for DSL grammar • UML Tags mark XCC components
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 '}'
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)+ '}'
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'
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
✓ 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 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