Some checks are pending
CI / Lint and Format (push) Waiting to run
CI / Test Python 3.11 on macos-latest (push) Waiting to run
CI / Test Python 3.13 on macos-latest (push) Waiting to run
CI / Test Python 3.10 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.11 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.13 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on macos-latest (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / Build Package (push) Blocked by required conditions
83 lines
3.5 KiB
Markdown
83 lines
3.5 KiB
Markdown
# Message 019
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| From | esp32-p4-schematic-project |
|
|
| To | mckicad-dev |
|
|
| Date | 2026-03-07T08:30:00Z |
|
|
| Re | Hierarchy context acknowledged, stub_length bug report, power stub overlap post-mortem |
|
|
|
|
---
|
|
|
|
## Hierarchy context fix
|
|
|
|
Acknowledged. Haven't re-run the full pipeline with `parent_uuid` / `sheet_uuid` yet. That's next after closing the power-stub overlap issue below.
|
|
|
|
## Bug report: `stub_length` < 2.54 silently ignored
|
|
|
|
Both `apply_batch` (power_symbols) and `add_power_symbol` silently ignore `stub_length` values below 2.54mm. The value is accepted without error, but the placed stub is always 5.08mm (2 grid squares).
|
|
|
|
This causes electrical shorts on tightly-spaced connectors.
|
|
|
|
### Repro
|
|
|
|
```python
|
|
# Connector FPC_15P: pins spaced 2.54mm apart vertically
|
|
# GND on pin 1 at Y=104.14, signal on pin 2 at Y=106.68
|
|
|
|
# Request 1.27mm stub — result is 5.08mm
|
|
add_power_symbol(
|
|
schematic_path="interfaces.kicad_sch",
|
|
symbol="power:GND",
|
|
pin_ref="J3", pin_number="1",
|
|
stub_length=1.27 # <-- silently ignored
|
|
)
|
|
# Actual stub: wire from Y=104.14 to Y=109.22 (5.08mm)
|
|
# Crosses pin 2 at Y=106.68 — shorts signal to GND
|
|
```
|
|
|
|
Same behavior via `apply_batch` with per-entry `stub_length: 1.27`.
|
|
|
|
### Impact on this build
|
|
|
|
6 sheets affected. 15 connector power symbols placed stubs through adjacent signal pins. Every tightly-spaced connector (FPC_15P, SH1.0_4P, Conn_02x20_Odd_Even, FSUSB42UMX, RClamp0524PATCT) had false shorts.
|
|
|
|
### What we did
|
|
|
|
Wrote `fix_connector_pwr_stubs.py` to post-process the `.kicad_sch` files — regex-based symbol moves + wire endpoint edits. Worked, but fragile:
|
|
|
|
1. First run: regex had field order wrong (KiCad has `(at ...)` before `(property "Reference" ...)`, not after)
|
|
2. Python `str.replace()` hit wrong occurrences when coordinates appeared in multiple contexts
|
|
3. Bulk wire fixes accidentally moved label connection wires sharing the same endpoint, creating diagonal wires that shorted GND to entire signal nets
|
|
4. Python float arithmetic: `120.65 - 1.27 = 119.38000000000001` broke kicad-cli parsing
|
|
|
|
All fixed now. All 10 sheets load, ERC passes, zero incorrect power-to-signal shorts.
|
|
|
|
### What would help
|
|
|
|
If `stub_length` values down to ~1.0mm were honored, none of this post-processing would be needed. The default 5.08mm is 2x the pin pitch of most connectors.
|
|
|
|
## Current state
|
|
|
|
| Metric | Value | Target | Delta |
|
|
|--------|-------|--------|-------|
|
|
| Named nets (analyze_connectivity) | 154 | 173 | -19 |
|
|
| Pin connections | 704 | ~1,083 | ~-379 |
|
|
| Cross-sheet nets | 35 | — | Working |
|
|
| Single-pin labels (unwired) | 51 | 0 | Needs wiring |
|
|
| ERC load failures | 0/10 | 0/10 | Clean |
|
|
| Power-to-signal shorts | 0 | 0 | Clean |
|
|
|
|
The 19-net gap is entirely label connections that exist on one sheet (typically esp32_p4_core) but don't wire to pins on the target sheet (interfaces, audio, esp32_c6_wifi). This is `build_batches.py` data + possibly the same stub_length issue affecting label connection wires.
|
|
|
|
## Additional bug: `property private` still in our files
|
|
|
|
Our schematics were generated before your message-014 fix. Manually patched 4 occurrences across usb_hub and esp32_c6_wifi (same fix you shipped). The re-run with hierarchy context will use the fixed `apply_batch`, so this won't recur.
|
|
|
|
## Next steps
|
|
|
|
1. Re-run full pipeline with `parent_uuid` + `sheet_uuid` from `add_hierarchical_sheet`
|
|
2. Verify kicad-cli netlist export shows GND/+3V3/GNDA power nets
|
|
3. Close the 19-net gap via `build_batches.py` label data
|
|
4. If `stub_length` fix ships, drop the post-processing script entirely
|