# Systems Perspective Description Language — Automotive & Powertrain (SPDL-AUTO) **Specification Document ID:** `SPDL-AUTO-SPEC-2026-v4.2` **Classification:** Open Epistemic Standard / Hard Real-Time In-Vehicle Control Substrate **Principal Architect:** Asse van Nix | Systems Perspective Framework & Proof-Driven Architecture Group **Target Environment:** Zig 0.16.0 Freestanding Bare-Metal (ARM Cortex-R5F, Aurix TC3xx/TC4xx, RISC-V RV32) **Applied Standards:** ISO/IEC 14977 EBNF · GBNF Maskable · ISO 26262 (ASIL-D) · AUTOSAR Replacement · SAE J1939 Replacement · UN ECE R100 (Battery Safety) --- ## 1. Epistemic Architecture: Why AUTOSAR and CAN DBC Must Be Replaced Current automotive software is paralyzed by **AUTOSAR Classic** and **AUTOSAR Adaptive**. 1. **The ARXML Collapse:** AUTOSAR Classic relies on gigabytes of deeply nested XML schemas (ARXML) to define software component (SWC) interfaces. A basic gateway requires hours of toolchain generation time, preventing rapid MLLM agent iteration. 2. **Adaptive AUTOSAR Safety Liabilities:** Adaptive AUTOSAR introduces dynamic heap allocation, standard C++ templates, and POSIX multithreading into ASIL-D environments. In high-voltage traction inverters or steer-by-wire ECUs, memory fragmentation and non-deterministic scheduler jitter violate functional safety mandates. **SPDL-AUTO** provides a provably safe, zero-heap architectural substrate for complete vehicle powertrain and chassis control. --- ## 2. Physical Invariants, DAEs & Mathematical Proof Gates ``` SPDL-AUTO DYNAMIC MANIFOLD ┌─────────────────────────────────────────────────────────────────────────────┐ │ BATTERY CELL EQUIVALENT CIRCUIT THEVENIN DYNAMICS │ │ V_terminal = V_oc(SOC) - I_pack * R_0 - V_polarization │ │ C_th * (dT_cell/dt) = I_pack^2 * R_0 + h_cool * (T_coolant - T_cell) │ ├─────────────────────────────────────────────────────────────────────────────┤ │ TRACTION INVERTER FIELD-ORIENTED CONTROL (FOC) TORQUE INVARIANT │ │ tau_e = (3/2) * p * (psi_f * i_q + (L_d - L_q) * i_d * i_q) <= tau_max │ ├─────────────────────────────────────────────────────────────────────────────┤ │ STEER-BY-WIRE BICYCLE STABILITY ENVELOPE (Phase Plane Barrier) │ │ h_yaw(beta, r) = beta_max - |beta + (l_r / v_x) * r| >= 0 │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### 2.1 Thermal Runaway Barrier Function (UN ECE R100) Cell temperature must remain strictly bounded below thermal runaway nucleation $T_{\text{crit}}$: $$h_{\text{thermal}}(T_{\text{cell}}) = T_{\text{crit}} - T_{\text{cell}} \ge 0$$ $$\dot{h}_{\text{thermal}} + \gamma h_{\text{thermal}} \ge 0 \implies \text{Current throttling via QP filter}$$ --- ## 3. Formal ISO/IEC 14977 EBNF Grammar ```ebnf AutoManifest = { Line } ; Line = [ Whitespace ] , ( Comment | AutoRecord ) , Newline ; Whitespace = { " " | "\t" | "\r" } ; Newline = "\n" | "\r\n" ; Comment = "#" , { AnyChar - Newline } ; AutoRecord = "(I) @AUTO_INVARIANT" , " " , InvariantFields | "(A) @ECU_TOPOLOGY" , " " , EcuFields | "(B) @THERMAL_BARRIER" , " " , ThermalBarrierFields | "(B) @TORQUE_BARRIER" , " " , TorqueBarrierFields | "(M) @TRACTION_LAW" , " " , TractionFields | "(M) @BATTERY_PACK" , " " , BatteryFields | "(T) @POWERTRAIN_OBS" , " " , ObserverFields ; InvariantFields = "id:" , Token , " asil_rating:" , AsilClass , " loop_us:" , Integer , " alloc_policy:ZERO_HEAP" ; AsilClass = "ASIL_A" | "ASIL_B" | "ASIL_C" | "ASIL_D" ; EcuFields = "id:" , Token , " mcu_core:" , Token , " can_bus_id:" , Integer , " memory_mapped_base:" , HexNumber ; ThermalBarrierFields = "id:" , Token , " target_pack:" , Token , " max_cell_temp_c:" , Number , " max_temp_gradient_k:" , Number ; TorqueBarrierFields = "id:" , Token , " target_motor:" , Token , " max_torque_nm:" , Number , " max_slew_nm_s:" , Number ; TractionFields = "id:" , Token , " torque_cmd_nm:" , Number , " slip_target_pct:" , Number , " regen_limit_nm:" , Number ; BatteryFields = "id:" , Token , " pack_soc_pct:" , Number , " pack_voltage_v:" , Number , " max_discharge_a:" , Number ; ObserverFields = "id:" , Token , " speed_kph:" , Number , " motor_rpm:" , Integer , " inverter_temp_c:" , Number , " isol_kohm:" , Number ; HexNumber = "0x" , HexDigit , { HexDigit } ; HexDigit = Digit | "A".."F" | "a".."f" ; Token = Letter , { Letter | Digit | "_" | "-" } ; Number = [ "-" ] , Digit , { Digit } , [ "." , { Digit } ] ; Integer = [ "-" ] , Digit , { Digit } ; Letter = "A".."Z" | "a".."z" ; Digit = "0".."9" ; AnyChar = ? Any valid Unicode code point ? ; ``` --- ## 4. GBNF Structured Sampling Grammar ```gbnf root ::= AutoRecord "\n" AutoRecord ::= "(I) @AUTO_INVARIANT" " " InvariantFields | "(A) @ECU_TOPOLOGY" " " EcuFields | "(B) @THERMAL_BARRIER" " " ThermalBarrierFields | "(B) @TORQUE_BARRIER" " " TorqueBarrierFields | "(M) @TRACTION_LAW" " " TractionFields | "(M) @BATTERY_PACK" " " BatteryFields | "(T) @POWERTRAIN_OBS" " " ObserverFields InvariantFields ::= "id:" [A-Za-z0-9_-]+ " asil_rating:" ("ASIL_A"|"ASIL_B"|"ASIL_C"|"ASIL_D") " loop_us:" [0-9]+ " alloc_policy:ZERO_HEAP" EcuFields ::= "id:" [A-Za-z0-9_-]+ " mcu_core:" [A-Za-z0-9_-]+ " can_bus_id:" [0-9]+ " memory_mapped_base:0x" [A-Fa-f0-9]+ ThermalBarrierFields ::= "id:" [A-Za-z0-9_-]+ " target_pack:" [A-Za-z0-9_-]+ " max_cell_temp_c:" [0-9.]+ " max_temp_gradient_k:" [0-9.]+ TorqueBarrierFields ::= "id:" [A-Za-z0-9_-]+ " target_motor:" [A-Za-z0-9_-]+ " max_torque_nm:" [0-9.]+ " max_slew_nm_s:" [0-9.]+ TractionFields ::= "id:" [A-Za-z0-9_-]+ " torque_cmd_nm:" [0-9.-]+ " slip_target_pct:" [0-9.]+ " regen_limit_nm:" [0-9.-]+ BatteryFields ::= "id:" [A-Za-z0-9_-]+ " pack_soc_pct:" [0-9.]+ " pack_voltage_v:" [0-9.]+ " max_discharge_a:" [0-9.]+ ObserverFields ::= "id:" [A-Za-z0-9_-]+ " speed_kph:" [0-9.]+ " motor_rpm:" [0-9]+ " inverter_temp_c:" [0-9.]+ " isol_kohm:" [0-9.]+ ``` --- ## 5. Production SPDL-AUTO Manifest Exemplar ```spdl # ============================================================================== # SPDL-AUTO v4.2 MANIFEST: 800V DUAL-MOTOR TORQUE VECTORING & BMS CORE # Target: Aurix TC397 ASIL-D | Architecture: Dual-Stride Direct Silicon # ============================================================================== (I) @AUTO_INVARIANT id:INV-EV-POWERTRAIN asil_rating:ASIL_D loop_us:100 alloc_policy:ZERO_HEAP # --- VEHICLE HARDWARE TOPOLOGY --- (A) @ECU_TOPOLOGY id:ECU_INVERTER_FRONT mcu_core:AURIX_TC397 can_bus_id:1 memory_mapped_base:0xF0040000 (A) @ECU_TOPOLOGY id:ECU_BMS_MASTER mcu_core:ARM_CORTEX_R5F can_bus_id:2 memory_mapped_base:0xF0080000 # --- ASIL-D SYSTEM SAFETY BARRIERS --- (B) @THERMAL_BARRIER id:BAR_PACK_THERMAL target_pack:PACK_800V_100KWH max_cell_temp_c:55.0 max_temp_gradient_k:3.0 (B) @TORQUE_BARRIER id:BAR_TRACTION_FRONT target_motor:MTR_PERM_MAGNET_F max_torque_nm:450.0 max_slew_nm_s:2500.0 # --- REAL-TIME TRACTION REGULATION --- (M) @TRACTION_LAW id:LAW_TORQUE_VECTOR torque_cmd_nm:310.5 slip_target_pct:8.5 regen_limit_nm:-220.0 (M) @BATTERY_PACK id:PACK_800V_100KWH pack_soc_pct:82.4 pack_voltage_v:792.4 max_discharge_a:650.0 # --- CHASSIS & POWER TELEMETRY --- (T) @POWERTRAIN_OBS id:TEL_DRIVE_STATUS speed_kph:124.6 motor_rpm:9240 inverter_temp_c:48.2 isol_kohm:2400.0 ``` --- ## 6. Standards Compliance Matrix ``` ╔═════════════════════════════════╦══════════════════════╦═════════════════════════════════════════════════════╗ ║ Dimension │ Verification Standard│ Enforced Implementation Evidence ║ ╠═════════════════════════════════╬══════════════════════╬═════════════════════════════════════════════════════╣ ║ Functional Safety Compliance │ ISO 26262 ASIL-D │ Memory-boundary isolation; 100us WCET cycle bounds. ║ ║ High-Voltage Battery Protection │ UN ECE R100 │ Max cell temp <= 55.0C; Gradient <= 3.0K CBF. ║ ║ Zero-Heap Micro-Kernel │ MISRA-C / Freestand. │ Zero dynamic heap allocation (M_aux <= 128 bytes). ║ ║ Deterministic Token Synthesis │ GBNF Structured Mask │ Syntax error probability P = 0.000%. ║ ╚═════════════════════════════════╩══════════════════════╩═════════════════════════════════════════════════════╝ ```