feat(ecad): Update ECAD to support latest atopile and fix some bugs - #119
Open
finger563 wants to merge 24 commits into
Open
feat(ecad): Update ECAD to support latest atopile and fix some bugs#119finger563 wants to merge 24 commits into
finger563 wants to merge 24 commits into
Conversation
ESP-IDF Size Report for 'Esp Box Emu'
FLASH uses app .bin size or json2 flash sum. RAM sums DRAM+IRAM via idf_size. Percentages shown when totals are available. |
packages.atopileapi.com no longer resolves (taken down in the 0.16 platform migration, like the components API), so dependency resolution of atopile/ti-tps63020@0.4.0 fails in CI and on any machine without a warm .ato/modules. Commit the installed package (sans .cache) so `ato build` finds it via its installed-package path and never contacts the dead registry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ato validates installed packages against the file hashes in .package_meta.json; git's CRLF->LF normalization of the STEP files changed their bytes on checkout, making CI fail with "Package has local modifications". Exempt ecad/.ato/modules from text normalization and re-commit the original bytes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ization The atopile-kicad docker image sets ATO_FROZEN=1, silently forcing CI builds into frozen mode, which fails on phantom in-memory diffs (locked-attribute defaults, arc direction normalization) that never reach the file on disk. Pass ATO_FROZEN=0 from the workflow — we verify layout stability ourselves via canonicalize + git diff. Also re-serialize box-emu-base.kicad_pcb through the same container build + canonicalize pipeline CI runs: the file had last been written by desktop KiCad (zone refills), whose s-expr dialect differs from atopile's writer, so CI's rebuild produced an 8k-line formatting diff. Verified idempotent across two container builds; DRC unchanged (265 violations / 0 unconnected, same accepted classes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add scripts/tidy-silkscreen.py: auto-places every visible reference label in the nearest clear spot around its footprint (avoiding pads, vias, silk/fab artwork, bare-copper membrane fingers, board edges and the other labels), normalized to upright 0/90 orientation and consistent 1.0/0.8/0.7 mm sizes. Applied to all 9 boards; the two labels the search could not fit (R8 in the button pocket) were placed by hand. Outline-footprint REF** markers hidden. Layouts re-serialized via the container build + canonicalize pipeline; DRC unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first tidy pass under-estimated text extents (~40% smaller than KiCad's rendered bounding boxes), so labels still collided with pads, neighboring parts and each other. tidy-silkscreen.py now measures the actual text bbox at each candidate position, adds pad-union part bodies as obstacles, caps blanket-sized artwork bboxes (membrane outline polylines), and gains a --verify mode that reports any label overlapping copper, artwork or another label. All 9 boards re-placed and verified clean; layouts re-serialized via the container build + canonicalize pipeline; DRC unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ized Rework the label placer for readability rather than any-free-spot: gap from the part body is hard-capped (~1.2 mm; a bounded straggler pass for pullups buried in the membrane fields), slots score by side preference (above > below > sides), lateral slide and size, tented vias count as soft cost instead of hard obstacles (freeing space in the via-dense io region), and row/column clusters of passives get their labels snapped into alignment. Fixes an anchor bug where non-center text justification offset the real text from the checked position. All 9 boards verify clean; every label except four membrane-pocket pullups sits within 1.5 mm of its part (previously up to 13 mm). DRC unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
R8/R9/R10 (down/left/right button pullups) sat inside the d-pad membrane outline where the rubber membrane rests on the board; no components may live there. Relocated all three to the clear corridor south of the membrane next to R11 (up), tapping their button nets on the existing dive-fan vias / new tap vias on the B-layer verticals, with a shared 3.3V feed spur off the io bus. The now-unused west-side 3.3V feed tree (nw vertical, west bus run, lp1/dnp1 chains, 32 items) is removed. Verified: no component intrudes on any membrane region (d-pad blob, A/B / X/Y capsules, start/select strip; C4 clears the d-pad corner arc by 0.25mm), labels re-placed and overlap-clean, DRC unchanged on all boards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.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.
Description
Motivation and Context
How has this been tested?
Screenshots (if appropriate, e.g. schematic, board, console logs, lab pictures):
Types of changes
Checklist:
Software
.github/workflows/build.ymlfile to add my new test to the automated cloud build github action.Hardware