SoC-Consistency

Changelog

All notable changes to soc-consistency are documented here. Releases follow Semantic Versioning.


[1.4.0] — 2026-05-20

New Rules

New Commands


[1.3.1] — 2026-05-19

Fixed

Notes


[1.3.0] — 2026-05-19

Added — Behavioural simulation (socc sim scenario)

v1.3.0 introduces a full behavioural simulation engine that models the three state machines a Linux kernel runs at every boot, suspend, and resume cycle: power rail sequencing, clock gate/ungate cascades, and reset deassertion ordering.

Static rules can only see what the DTS says. The simulation asks what actually happens at runtime.

socc sim scenario board.dts --soc rk3588
socc sim scenario board.dts --soc rk3588 --scenario suspend --timeline
socc sim scenario board.dts --soc rk3588 --format json
socc sim scenario --demo --scenario all

Scenarios

Scenario Description
boot Power-on and full device probe sequence
suspend Linux PM suspend (s2idle / deep)
resume Resume from suspend back to active
runtime_pm Runtime PM autosuspend + wake cycle
all Run all four in sequence (default)

Violation codes

Code Severity Scenario Description
PS-001 warning boot Supply does not meet required stability window before consumer probes
PS-002 error suspend Supply disabled before consumer finishes suspend callback
PS-003 error boot / resume Child regulator enabled before parent is fully stable
CG-001 error suspend Clock gated while consumer device still active
CG-002 error suspend Parent clock disabled while child clock has active consumers
RS-001 error boot Device reset deasserted before required clock provider is ready
RS-002 warning boot Device missing required resets property

Constraint-driven tuning

Timing requirements and ordering rules are read from the SoC YAML file (simulation_constraints section). The shipped rk3588 constraints cover power_sequencing, clock_gating, reset_dependencies, and required_resets_patterns. Any custom SoC YAML can include the same section.


[1.2.3] — 2026-05-18

Added

Rule MM-006 — Register Address / Node-Name Mismatch

Catches copy-paste errors where the @hex suffix in a node name disagrees with the first value of the reg property. dtc compiles such files without warnings; the kernel maps the driver to the wrong MMIO window.

/* BAD */
i2c@fe2b0000 { reg = <0xfe2c0000 0x1000>; /* MM-006 */ };

Both 32-bit and 64-bit cell pairs are handled.

Deliberate-violation annotations — socc-expect

Complements the existing socc-ignore. An expected violation that does not fire produces info[SE-001] so stale annotations are surfaced immediately:

/* socc-expect: MM-006 -- fly-wire on board rev B */
i2c@fe2b0000 { reg = <0xfe2c0000 0x1000>; };

Binary DTB decompiler — socc decompile

Annotates dtc decompile output with human-readable peripheral names from the SoC database. Accepts .dtb or .dts input:

socc decompile board.dtb --soc rk3588
socc decompile board.dtb --soc rk3588 -o board_annotated.dts

[1.2.2] — 2026-05-18

Added

socc check --strict

By default socc check exits 0 for warnings (only errors produce exit 3). --strict restores full granular exit-code behaviour so CI can be configured to treat warnings as failures.

Offline rule lookup — socc explain CODE

socc explain BW-101

Renders with rich when installed, falls back to plain text.

socc smart-diff --semantic

Filters the diff output to hardware-relevant property changes only — clock frequencies, reg, supply rails, interrupt lines, pin-control settings, etc. Node ordering, labels, phandle renumbering, and non-critical metadata are silently dropped.


[1.2.1] — 2026-05-17

Fixed


[1.2.0] — 2026-05-17

Added


Upgrading from pre-1.1

All flat command names continue to work as hidden aliases.

Pre-1.1 command 1.1+ equivalent
socc gc socc analyze gc
socc check-memory socc analyze memory
socc check-bounds socc analyze bounds
socc check-irq socc analyze irq
socc check-deps socc analyze deps
socc audit socc audit bindings
socc audit-bom socc audit bom
socc amp-audit socc audit amp
socc cross-check socc audit cross-check
socc generate-qemu socc generate qemu
socc generate-diagram socc generate diagram
socc export-headers socc generate headers
socc topology socc viz topology
socc pinmap socc viz pinmap
socc power-seq socc viz power-seq
socc shell socc sim shell
socc live-check socc sim live-check
socc simulate-smoke socc sim smoke
socc simulate failure NODE DTS socc sim failure NODE DTS
socc migrate socc sim migrate
socc validate-socdef socc socdef validate
socc check-socdef socc socdef check