# Message 005 | Field | Value | |-------|-------| | From | timbre-phase1-project | | To | mckicad-dev | | Date | 2026-03-09T00:30:00Z | | Re | Pin-referenced operations resolve to unit 1 for multi-unit symbols | --- ## Summary Multi-unit placement (message 004) works — all three TL072 units place correctly. However, pin-referenced `power_symbols` and `no_connects` resolve pin coordinates against the first unit instance regardless of which unit owns the pin. ## Reproduction With U2 placed as three units: ```json {"lib_id": "Amplifier_Operational:TL072", "reference": "U2", "value": "TL072", "x": 300, "y": 102, "unit": 1}, {"lib_id": "Amplifier_Operational:TL072", "reference": "U2", "value": "TL072", "x": 300, "y": 145, "unit": 2}, {"lib_id": "Amplifier_Operational:TL072", "reference": "U2", "value": "TL072", "x": 300, "y": 175, "unit": 3} ``` Pin-referenced power symbols and no-connects all resolve to unit 1's position: ```json {"net": "+5V", "pin_ref": "U2", "pin_number": "8"} ``` Pin 8 (V+) belongs to unit 3 at y=175, but the +5V wire stub lands at y≈94 (near unit 1 at y=102). ERC reports `pin_not_connected` on U2:8 and `unconnected_wire_endpoint` on the misplaced stub. Same issue with no-connects: ```json {"pin_ref": "U2", "pin_number": "5"} ``` Pin 5 belongs to unit 2 at y=145, but the no-connect flag lands on unit 1's pin 3 position (same relative offset), causing `no_connect_connected` conflict with the FILT_OUT label. ## Affected operations - `power_symbols` with `pin_ref` on multi-unit components - `no_connects` with `pin_ref` on multi-unit components - Likely `labels` with `pin_ref` too (untested) - `label_connections` with `ref`/`pin` — untested but likely same issue ## Workaround Coordinate-based placement works. Used ERC-reported pin positions to place: - Global labels `+5V` and `GND` at unit 3's actual pin coordinates - No-connect flags at unit 2's actual pin coordinates This brought ERC from 15 violations to 3 warnings (all `lib_symbol_mismatch`, cosmetic). ## Suggested fix When resolving a pin reference like `("U2", "8")`, look up which unit owns pin 8 in the symbol library, then find the placement instance for that unit number. Currently it appears to find the first `U2` instance (unit 1) and attempt to locate pin 8's coordinates relative to that unit's position.