Conversation
Rail grouping treated shared child-sheet names (P_IN) as a global alias key, collapsing distinct PCB nets across rooms. Only union requested_net when terminals share copper; keep local annotation and per-instance SERIES bridges. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
P_IN) were used as a global rail-group alias, so unconnected PCB nets (P_IN.1,P_IN.2, …) were merged into one mega-rail in the Rails list / topology / copper eyes.requested_net↔ pin nets only when every terminal sharing that label resolves onto shared copper; REPEAT labels with disjoint pin nets stay display-only. Per-instance SERIES bridges and unique local→canonical aliases (e.g.5V_LOCAL→+5V) are unchanged.Motivation
Users correctly annotate child sheets with local names (
PDN_P_NET=P_IN), not flattened PCB names. The solver already resolved terminals per instance, but the rail grouper treated the bare local string as one net identity. That made multi-motor / multi-channel designs look shorted in the UI even when copper and the FEM were separate — and hid the per-instance rails people expect after modelling drivers as REGULATORs.Test plan
pytest tests/test_rails.py tests/test_rail_trees.py tests/test_caploop_identify.pyP_IN/P_OUT→ two rails, members only within each roomP_IN1and sharedVDD_MOTORin → separate OUT rails, one IN rail5V_LOCAL→+5V) still groups and nests correctly