Convert AUTOSAR DCM/CanTp/DEM arxml to LaTeX UDS (ISO 14229 / 15765) specification documents and ISO 22901-1 ODX/PDX
Project description
udsxml2tex
AUTOSAR DCM/CanTp/DEM ARXML → ISO 14229 (UDS) / ISO 15765 / ISO 22901-1 (ODX/PDX) specification documents.
udsxml2tex parses AUTOSAR diagnostic ARXML (DCM, CanTp, DEM, DoIP, COM, AP)
and renders a complete UDS specification in LaTeX / PDF / HTML / Markdown
/ RST / CSV / YAML / JSON / DOCX, plus ASAM ODX 2.2.0 / PDX
(ISO 22901-1) for industry diagnostic tooling.
It also ships a local browser UI (--serve) that one-clicks an entire
BSW software repository through the pipeline, auto-detecting single-ECU
vs multi-ECU layouts.
Install
pip install udsxml2tex # core (LaTeX / Markdown / JSON / YAML)
pip install udsxml2tex[web] # browser UI (--serve)
pip install udsxml2tex[llm] # LLM analysis (Anthropic + OpenAI / Ollama)
pip install udsxml2tex[ecu-test] # CAN/ISO-TP hardware testing
pip install udsxml2tex[all] # everything
Other extras: yaml, watch, docx, lsp, progress, rich, viz.
A LaTeX distribution (TeX Live / MiKTeX with xelatex for CJK) is required
to compile generated .tex to PDF. The HTML output renders standalone.
Quick start
# Single ARXML → LaTeX
udsxml2tex dcm.arxml -o spec.tex
# Merge DCM + CanTp + DEM
udsxml2tex dcm.arxml cantp.arxml --dem dem.arxml -o spec.tex
# Auto-discover everything under a BSW repo (CLI mirror of the browser UI)
udsxml2tex --repo /path/to/bsw-project -o spec.tex
udsxml2tex --repo /path/to/bsw-project --repo-dry-run # show classification
# Output formats
udsxml2tex dcm.arxml --format html -o spec.html
udsxml2tex dcm.arxml --format md -o spec.md
udsxml2tex dcm.arxml --format pdx -o ecu.pdx # ISO 22901-1 PDX
udsxml2tex dcm.arxml --pdf # compile to PDF
# Multi-language output (English / German / Japanese in one run)
udsxml2tex dcm.arxml --langs en,ja,de -o spec.md --format md
# Validation, diff, multi-ECU systems
udsxml2tex dcm.arxml --validate
udsxml2tex new.arxml --diff old.arxml
udsxml2tex --system system.yaml --system-output-dir out/ # 1+1 / gateway
# Browser UI
udsxml2tex --serve # http://127.0.0.1:8765
Python API
from udsxml2tex import ArxmlParser, TexGenerator, validate, diff_specs
spec = ArxmlParser().parse_multi(["dcm.arxml", "cantp.arxml"])
TexGenerator().generate(spec, "spec.tex")
TexGenerator().compile_pdf("spec.tex")
print(validate(spec).summary()) # ISO 14229-1 consistency
print(diff_specs(spec_a, spec_b).to_markdown())
Features
Coverage
- DCM (ISO 14229-1) — sessions, security, all 24 standard services, DIDs, routines, DTCs, memory ranges, IO control / periodic / dynamic DIDs, Authentication, ResponseOnEvent, LinkControl, multi-client.
- CanTp (ISO 15765-2) — channels, BS/STmin, N_As/Bs/Cs/Ar/Br/Cr, addressing.
- DEM (ISO 14229-1 §11) — DTC config, OBD/WWH-OBD, freeze frames, extended data, operation cycles, indicators, combined DTCs.
- DoIP (ISO 13400), Communication ARXML, Adaptive Platform service interfaces.
- C/C++ source scanning — DID/RID global variables (transitive depth ≤3).
- Bootloader overlay — single document covering Drive + Boot domains via YAML.
Output
tex(Jinja2 + structured ZIP),pdf(xelatex/latexmk),html(multi-page ZIP with offline Mermaid + NRC ladders),md,rst,csv,yaml,json,docx,odx,pdx.- Visualizations: heatmaps, timing diagrams, UML sequences, byte-level DID maps, session/security FSMs.
Quality
--validate— 17 ISO 14229-1 consistency checks.--diff— semantic spec diff (ARXML or JSON).--iso-version {2006,2013,2020}— drop features outside the chosen revision.--autosar-compat-report— flag features postdating the detected AUTOSAR release.- Schema export: JSON Schema (draft-07), Pydantic v2 model source.
LLM analysis ([llm] extra)
--llm-summarize,--llm-query,--llm-nrc-descriptions,--llm-translate.- Backends: Anthropic Claude API or any OpenAI-compatible server (Ollama,
llama.cpp, vLLM, OpenRouter, Azure). One-shot setup:
udsxml2tex --bootstrap-ollama(Linux/macOS).
ECU hardware testing ([ecu-test] extra)
- Auto-generates UDS test cases from the parsed spec, executes over CAN /
ISO-TP via python-can. Heuristic generator or formal
--ecu-formalstate-machine explorer (all-transitions coverage). HTML / JUnit XML / CSV / coverage reports.
Multi-ECU systems
- Declarative YAML config (
--system) for redundant / gateway-with-forwarder topologies, per-ECU spec + integration document, ARXML coverage-gap routing inference, cross-ECU validator.
Browser UI (--serve, [web] extra)
- Local FastAPI server with three tabs:
- Generate — pick a BSW repository folder; the server uploads
UDS-relevant files (
.arxml,.c,.h,.yaml,.json), classifies each ARXML by AUTOSAR module, auto-detects single vs multi-ECU, and generates the chosen format.format=texZIPs include a compiledspec.pdfwhenxelatexis on PATH; otherwise the UI flags the failure (and the ZIP carries aPDF_NOT_COMPILED.txtwith the underlying reason). - Chat — multi-turn LLM Q&A (Anthropic / Ollama / OpenAI-compatible) with streaming responses; spec is cached server-side per session.
- ECU Test — drive CAN/ISO-TP test runs from the browser.
- Generate — pick a BSW repository folder; the server uploads
UDS-relevant files (
Tooling
- Interactive wizard (
-I), config files (--config), file watching (--watch), parallel parse, incremental cache, XSD validation, pytest plugin (uds_specfixture), LSP server, shell completion, plugin system (ParserPlugin/GeneratorPlugin), i18n (en / de / ja with bilingual--lang ja+enmode + multi-language--langs en,ja,de).
Distribution
- Docker image (TeX Live +
udsxml2tex[all]). - GitHub Action (Marketplace-ready).
- pre-commit hooks (validate / regen PDF / regen TeX ZIP).
- VS Code extension (right-click
.arxml→ generate / validate / diff / LLM).
Documentation
- Full feature reference & Python API:
docs/README_full.md - Standards coverage matrices (ISO ↔ AUTOSAR ECUC ↔ udsxml2tex,
with
file:linesource citations):docs/standards/— ISO 15765-2 (CanTp), ISO 14229-2 (session/timing), ISO 14229-1 (services, DTC/Dem), required-ARXMLs note. - Changelog:
CHANGELOG.md - Contributing:
CONTRIBUTING.md
Requirements
- Python ≥ 3.9
lxml≥ 4.9,Jinja2≥ 3.1- LaTeX with
xelatex(TeX Live / MiKTeX) for PDF output
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file udsxml2tex-0.43.0.tar.gz.
File metadata
- Download URL: udsxml2tex-0.43.0.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c22d6c86a4eed21f0d7992f0fc7d6ea34c469cd7de8d861c71ca9d11ddaf96b8
|
|
| MD5 |
1597db743a689fb1d7a1306a8f27adf5
|
|
| BLAKE2b-256 |
7b10da838f8799663e34ff1b8f51b90a772112c3d9e8f5f1b5cd97cf4617d3a1
|
File details
Details for the file udsxml2tex-0.43.0-py3-none-any.whl.
File metadata
- Download URL: udsxml2tex-0.43.0-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b968594c4a15bfa817302a17277aa850c72d33b975e7075f4cdd9608dcecce5
|
|
| MD5 |
92d3c661f8b1d068bb778882905ca6fd
|
|
| BLAKE2b-256 |
8d93f5c3190a79fc339374b38d7ae7ac084fffdd05c609e888425dd2df471128
|