Skip to content

ti-tps54560x: package update version 0.2.0, ato 0.14.x#366

Open
nickkrstevski wants to merge 4 commits intomainfrom
package-update-0.14.x-ti-tps54560x
Open

ti-tps54560x: package update version 0.2.0, ato 0.14.x#366
nickkrstevski wants to merge 4 commits intomainfrom
package-update-0.14.x-ti-tps54560x

Conversation

@nickkrstevski
Copy link
Copy Markdown
Contributor

@nickkrstevski nickkrstevski commented Jan 21, 2026

Let claude rip on Resistor Dividers:

"
Summary of Fixes

5 fixes across 7 files that together fix resistor voltage divider picking in the atopile solver:

Fix 1: Auto-canonicalize non-canonical expressions (mutator.py)

Non-canonical expression types (like LessOrEqual, IsSuperset) that survived into post-canonicalization iterations caused assertion failures. Added
_canonicalize_builder() that converts them to canonical equivalents on the fly.

Fix 2: Graph stability convergence detection (solver.py)

The solver could loop indefinitely when oscillating between equivalent representations. Added convergence detection that stops when the graph node
count stays stable for consecutive iterations (threshold=1, after at least 3 iterations).

Fix 3: IsSubset instead of IsSuperset in part attachment (models.py)

attach() was using IsSuperset to constrain picked parameter values. Changed to IsSubset which is the canonical form and correctly constrains the
parameter to the picked literal's range.

Fix 4: Per-group candidate fetching (picker.py)

Previously, all candidates were fetched using the global solver before groups were expanded. Changed to fetch candidates per-group using each group's
own solver, so constraints propagated from earlier picks are visible.

Fix 5: Skip anticorrelated pairs after first pick (utils.py, mutator.py, solver.py, picker.py)

ROOT CAUSE FIX: get_relevant_predicates uses anticorrelated pairs (from Not(Correlated(...)) expressions) to prevent spurious transitive closure. But
after picking R1, this filtering blocked the solver from discovering R1's IsSubset constraint when traversing from R0. Added skip_anticorrelated
parameter through the entire call chain, enabled when depth > 0 (i.e., after first round of picking).

Fix 6: AdjustableRegulator parameter linkages (AdjustableRegulator.py)

Added missing Is expressions linking input_voltage/output_voltage to power interface voltages, v_in/v_out aliases, and feedback divider
voltage/current constraints.

Fix 7: Helper equation for backward propagation (ResistorVoltageDivider.py)

Added total_R = R1 / ratio equation to enable the solver to propagate total resistance backward from R1 and ratio constraints.

✻ Worked for 2h 32m 58s
"

@nickkrstevski nickkrstevski force-pushed the package-update-0.14.x-ti-tps54560x branch from 5fdebfb to c6025a3 Compare January 21, 2026 03:06
@nickkrstevski nickkrstevski added the bug Something isn't working label Jan 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-solver bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants