From c87e374ec88a193321474bdad981f13131eed3d5 Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 13 Jul 2026 14:49:13 -0700 Subject: [PATCH 1/7] Add RP2040 microcontroller subcircuit --- README.md | 9 + bun.lock | 90 +- index.tsx | 1 + .../Microcontroller_RP2040.circuit.tsx | 818 ++++++++++++++++++ .../imports/AP2112K_3_3TRG1.tsx | 108 +++ .../imports/B5819W_SL.tsx | 140 +++ lib/Microcontroller_RP2040/imports/RP2040.tsx | 652 ++++++++++++++ .../imports/SKRPACE010.tsx | 153 ++++ .../imports/TYPE_C_16PIN_2MD_073_.tsx | 241 ++++++ .../imports/W25Q16JVUXIQ.tsx | 138 +++ .../imports/X322512MSB4SI.tsx | 97 +++ .../imports/XL_1608SURC_06.tsx | 146 ++++ package.json | 2 +- tests/test.test.tsx | 47 + 14 files changed, 2608 insertions(+), 34 deletions(-) create mode 100644 lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx create mode 100644 lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx create mode 100644 lib/Microcontroller_RP2040/imports/B5819W_SL.tsx create mode 100644 lib/Microcontroller_RP2040/imports/RP2040.tsx create mode 100644 lib/Microcontroller_RP2040/imports/SKRPACE010.tsx create mode 100644 lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx create mode 100644 lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx create mode 100644 lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx create mode 100644 lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx diff --git a/README.md b/README.md index c8942cd..c908dbf 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,12 @@ return ( ) ``` + +The RP2040 subcircuit includes the microcontroller, QSPI flash, crystal, USB-C, +power regulation, decoupling, boot/run controls, and SWD test points: + +```tsx +import { Microcontroller_RP2040 } from "@tscircuit/common" + +return +``` diff --git a/bun.lock b/bun.lock index 63b5eb5..52204a3 100644 --- a/bun.lock +++ b/bun.lock @@ -7,7 +7,7 @@ "devDependencies": { "@biomejs/biome": "^2.2.4", "@types/react": "^19.1.12", - "tscircuit": "^0.0.1672", + "tscircuit": "^0.0.2067", "tsup": "^8.5.0", }, }, @@ -207,31 +207,35 @@ "@tscircuit/alphabet": ["@tscircuit/alphabet@0.0.25", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-PWLjptI6AlLEtF/wjN1N8uC+n3G7vtg0j3xKE1fgWHDhahtnlQRqHDrtPSLlkIR9aJjRfjplzLuaUEaCRvJmZA=="], - "@tscircuit/capacity-autorouter": ["@tscircuit/capacity-autorouter@0.0.452", "", { "dependencies": { "@tscircuit/high-density-a01": "^0.0.25", "fast-json-stable-stringify": "^2.1.0", "object-hash": "^3.0.0" } }, "sha512-rR1+i+YcTnnQ4Plny1ISHN39QnopL4ch7L0D8hRoUS4CAdQr9vadNUKmB+O0OmUJmclLVn8uNpHOJfyu13kusw=="], + "@tscircuit/capacity-autorouter": ["@tscircuit/capacity-autorouter@0.0.665", "", { "dependencies": { "fast-json-stable-stringify": "^2.1.0", "object-hash": "^3.0.0", "stack-svgs": "^0.0.1" } }, "sha512-OjjSFs/K62TfMiWyzP+Y2tp1MjwRKtbzX6P0jzbtRcdMeRq5adITYNPMswoSBQsMk/OXHxl7NnD8ubX8OF3Vcg=="], - "@tscircuit/checks": ["@tscircuit/checks@0.0.124", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-AlO/UqSukc6SO/sVG7JqkDz1u7k1WITqDccsd+IkWRVuNJhxw0T8R1ShP5xepbsS+ZTguJGOuBJ0J7kmnH/9uQ=="], + "@tscircuit/checks": ["@tscircuit/checks@0.0.142", "", { "peerDependencies": { "@flatten-js/core": "*", "@tscircuit/math-utils": "*", "circuit-json": "*", "circuit-json-to-connectivity-map": "*", "typescript": "^5.5.3" } }, "sha512-8hPny2FnzB/05sSsqOazjWodpOil1CSrUDzGzIASSz02l4xTrZL+2YlIc6ey5kacgSOBlFYrzDFS74ffE/+Utw=="], - "@tscircuit/circuit-json-util": ["@tscircuit/circuit-json-util@0.0.94", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "3" } }, "sha512-kEYV6LzcZbRuw43IxsZ1cZL2pUx4nF07MYAHHhY9s90UzKYaIYfZ1q11s+F2wNwKecCcSyTUoAwWeqazLQEyVQ=="], + "@tscircuit/circuit-json-util": ["@tscircuit/circuit-json-util@0.0.97", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "3" } }, "sha512-qg0R/X4mCwb43f53+W3FkxUNRvgGz1WNjpQfKi+QXnoqISw6EZ1Y7VcSynO8S2d8hPGV9Mk5DUOjTPjlEUrrGA=="], - "@tscircuit/cli": ["@tscircuit/cli@0.1.1287", "", { "peerDependencies": { "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-d7HSCFDUCccSMwqDtWNucJLT1r2Ofj0XB9rAqgxKOzDl/r2SbecciX/2qtMBLvoPS83hYYkQXbVaOYrch8BtqQ=="], + "@tscircuit/cli": ["@tscircuit/cli@0.1.1660", "", { "peerDependencies": { "circuit-json": "^0.0.446", "tscircuit": "*" }, "bin": { "tscircuit-cli": "cli/entrypoint.js" } }, "sha512-mMRjOK569uDzYQrEgHW2BVFDwpx3K2H/7yLiQsvatV0kcd67djCeGwzhl+JB0WFDYYdLFH+79684FvbBsFEvfw=="], - "@tscircuit/copper-pour-solver": ["@tscircuit/copper-pour-solver@0.0.23", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-0AooADDlpSvVQTouy9GhKhKfX5D5LNcnjAhOdFSFOAZTxzQX3eYylUysAlogjFw/nqcZ0OwbAc0QcmNXFWY3Lg=="], + "@tscircuit/copper-pour-solver": ["@tscircuit/copper-pour-solver@0.0.39", "", { "dependencies": { "@tscircuit/manifold-2d": "^0.0.6" }, "peerDependencies": { "typescript": "^5" } }, "sha512-Z8+3UrK919QbwJkGyHsb8DGuHqE66iCylpbF/v132PuvrRbHo+phmOfP9nEQjI63ldh976EsT26qw535H15M1g=="], - "@tscircuit/core": ["@tscircuit/core@0.0.1194", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-packing": "0.0.71", "css-select": "5.1.0", "format-si-unit": "^0.0.3", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "schematic-symbols": "*", "typescript": "^5.0.0" } }, "sha512-7/UI0gI04pwx5amG/k/7TSjpzIzy+NGsmEqIYv6z+MtSVA96PhdW4TYJ6rffpYMG1Q5QXbEV25CQrky7Q9tbWQ=="], + "@tscircuit/core": ["@tscircuit/core@0.0.1437", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "0.0.75", "css-select": "5.1.0", "format-si-unit": "^0.0.7", "nanoid": "^5.0.7", "performance-now": "^2.1.0", "react-reconciler": "^0.32.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "zod": "^3.25.67" }, "peerDependencies": { "@tscircuit/capacity-autorouter": "*", "@tscircuit/checks": "*", "@tscircuit/circuit-json-util": "*", "@tscircuit/footprinter": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/matchpack": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", "@tscircuit/schematic-match-adapt": "*", "bpc-graph": "*", "circuit-json": "*", "circuit-json-to-bpc": "*", "circuit-json-to-connectivity-map": "*", "schematic-symbols": "*", "typescript": "^5.0.0" } }, "sha512-J4H1bPOsqRmfeRMMR9WDtsw71N6ZjYKZ37Rq1Yc3VNOgEBdgNRqlMkf/mHCAeojEBw2E4V9D3kDwk9q56/DcKQ=="], - "@tscircuit/eval": ["@tscircuit/eval@0.0.785", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-3+AM1QSQReAjIHA2pcYNeIDAvClBss5b2yKYJhA0rLh06TFFy+0lGRoreBvq2nVCyqz9xTcJ1lUwUkmKrw0XYQ=="], + "@tscircuit/eval": ["@tscircuit/eval@0.0.1003", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-WAJjlcSZ8q/eJ61yiwqXp52qBmZsXlHRXQSUnLQbaxVx+6ypZzP3hHpI+GMxtEYDL/m2eFw9sIgn7VbqK9iGwg=="], - "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.351", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-AdeHTvD12tIEE/jYzsl9srSiMbJm6fGj5NLFTwOvUWCVPxqVACuwzbfLnFYKC2fE+QVdZWI7FhkzzeeqXjyokg=="], + "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.371", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-noJYnhwF0vx1AcNl8X+Iy0LYWPQ37S6rGAipa7k8yux8VLcrYPtwYQ/lD+E1zZkg+NAtqbkoGELyzLdSqwsANA=="], - "@tscircuit/high-density-a01": ["@tscircuit/high-density-a01@0.0.25", "", { "dependencies": { "flatbush": "^4.5.0" }, "peerDependencies": { "typescript": "^5" } }, "sha512-ilmgACnyrcfe6t1jwy4PmWuILz3ZtVxpQKsSJItx9g+dIE+maiT6eeOEvz5OSQ6vTnTpLwEwMHfmiN8XNDi96w=="], + "@tscircuit/image-utils": ["@tscircuit/image-utils@0.0.8", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "color-diff": "^1.4.0", "fast-png": "^8.0.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1" } }, "sha512-/a/dyd0Ly+YSk73pNXi0M02nfaiZ1NQ8PVNDBTOHHESyTOrNHiVAT+NWxsWi44gHZ/ivLegAmjxSSbSSGfU+sQ=="], "@tscircuit/infer-cable-insertion-point": ["@tscircuit/infer-cable-insertion-point@0.0.2", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-k3JwlGtsdHRRZELJzjXBKP+9xdzn+v4dqllhJIFMcrMvlBIaOTt8CbxLO+vcxPvz8Csf+yFChnTos8/vYcSgNg=="], "@tscircuit/infgrid-ijump-astar": ["@tscircuit/infgrid-ijump-astar@0.0.35", "", {}, "sha512-PZx3GyD7mDNEhLJn8+7n8NjrieOvrX03g7Gx1cvwXv9mmgSC4M+yTA0WC4DgOvcRdTnarf0R8xvwtDeJ4tMK9Q=="], - "@tscircuit/internal-dynamic-import": ["@tscircuit/internal-dynamic-import@0.0.2", "", {}, "sha512-cflWt1v+3O//e6jAQgHqmzPfgcu1QP0gDefhl1YxeTHWdginlecuvbGdFZ1V9ETxo4+xAwbHDfV+6fyXpvzK8A=="], + "@tscircuit/internal-dynamic-import": ["@tscircuit/internal-dynamic-import@0.0.10", "", {}, "sha512-GsnHJ2dySAQz2BjW4kA8BsF/M8wVOItQ0Kvm/6ABe1XfaKL/OzPH4m6SBm07bx+hhhp5qRXPbJWNEP150clmvw=="], - "@tscircuit/matchpack": ["@tscircuit/matchpack@0.0.16", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-F9QX7uQdml88XGKwe7kDkYnwHfG0kykr2cHD+JsnATKlgi32vYwFGuRaOR4tyRrkDGdmzt5T7YYb4Mhi9uncGA=="], + "@tscircuit/krt-wasm": ["@tscircuit/krt-wasm@0.1.6", "", { "peerDependencies": { "tscircuit": "*" } }, "sha512-XRj8SIgWro1t56TieLhkOtRVsptq3cwzBtdbDEkRB2YiyX4V/r0zneii+c5I8F3D8rJUz4+GswGpPeO4eV8x8w=="], + + "@tscircuit/manifold-2d": ["@tscircuit/manifold-2d@0.0.6", "", {}, "sha512-kYny1hDwPHOwRfMQtbfLh0nvCQ7nM91kkHy7pnj1UrqM6rcgDymZVCZB7ib5Cx1aZFIs8xCCF7lA51tq+giDcw=="], + + "@tscircuit/matchpack": ["@tscircuit/matchpack@0.0.34", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-rh33jHP5vK66HFjHyiw5+26NhcceQB9KbrrxSB024vmABU0cA1GXe8EsC2YJLYXm4cYKKV5FM+/C4Z+mw4TO7w=="], "@tscircuit/math-utils": ["@tscircuit/math-utils@0.0.36", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-HwHS3do6CLQFnLGd0f3+kQzGfENFllpt5ZFWF9gfw2k5Rc5VSxSJi8/MLfHEgaMgrnMCZ5Hqh3DlUD6U3pMXyg=="], @@ -239,21 +243,21 @@ "@tscircuit/mm": ["@tscircuit/mm@0.0.8", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-nl7nxE7AhARbKuobflI0LUzoir7+wJyvwfPw6bzA/O0Q3YTcH3vBkU/Of+V/fp6ht+AofiCXj7YAH9E446138Q=="], - "@tscircuit/ngspice-spice-engine": ["@tscircuit/ngspice-spice-engine@0.0.8", "", { "dependencies": { "eecircuit-engine": "^1.5.6" }, "peerDependencies": { "@tscircuit/props": "*", "circuit-json": "*", "typescript": "^5" } }, "sha512-jubJ8Kgpm9FPRdHBiRBYkf5+B37bqkjDRKpCXOMqS08UZnbS+iCv2k4ACMW+s1zbK0Xa5v+9yjuoHlfKFW1v/Q=="], + "@tscircuit/ngspice-spice-engine": ["@tscircuit/ngspice-spice-engine@0.0.19", "", { "peerDependencies": { "@tscircuit/props": "*", "circuit-json": "*", "typescript": "^5" } }, "sha512-HV/HrShlvQWSNJtjBJqBmFIvRUHOZYoIGjNdNaNhN7EvHpJ2MdVmqU/c4D+DzOVU/J7vg8R6yLvUHixXvH5LFg=="], - "@tscircuit/props": ["@tscircuit/props@0.0.513", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-IhIW+ulA0dVUFdSihArBD1fyPGsAEhJlQ+ucBOYLpAMVYJyn1KUxs1hdmwSCOU8q4UfK7CompI9GU8viKQVWRA=="], + "@tscircuit/props": ["@tscircuit/props@0.0.574", "", { "peerDependencies": { "circuit-json": "*", "react": "*", "zod": "*" } }, "sha512-Vi0cFZQ01jBL6TL3yPurDE9onwmGd4f/q2Vr299+NpWsfX4QtntdHctws3cA3hUgy8i4+KrR2p2N7OlWpo6Uug=="], - "@tscircuit/runframe": ["@tscircuit/runframe@0.0.1873", "", { "dependencies": { "@tscircuit/eval": "^0.0.785", "@tscircuit/solver-utils": "^0.0.7" } }, "sha512-xiGcLBCEhadA8Ze36vtm9uZpvimbRoB4djpFhGY5XBu3hpTcYsXRPhNKDTVW+4vGREhckEUjifYPUay7hmqX7A=="], + "@tscircuit/runframe": ["@tscircuit/runframe@0.0.2201", "", { "dependencies": { "@tscircuit/eval": "^0.0.1003", "@tscircuit/solver-utils": "^0.0.7" } }, "sha512-RCyDyfmPizUowpa1pD8IGJFBgI7s2s/vyiBZ579SI6CqgFVIVtHAC7Llo7cIRViwVFuJHJjId8N9FICcV8XYMA=="], "@tscircuit/schematic-corpus": ["@tscircuit/schematic-corpus@0.0.114", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-jDQX+XDXP6PklB39X8AwUSuiqGRdn78esy1wD/qG8U3cCXkT5rtE3ousDVaKRxclCeED8FxJlD+ZvRtAe8mw8w=="], - "@tscircuit/schematic-match-adapt": ["@tscircuit/schematic-match-adapt@0.0.16", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-85e6Pq58zrhZqivyW4bPVZfGfg8xLBCj3yjHl5LZslwfsDRgtWVob4bjJMhCfNL/mLsPUQKnpiDNnFKl9ugUZw=="], + "@tscircuit/schematic-match-adapt": ["@tscircuit/schematic-match-adapt@0.0.18", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-LpXF7aSmP4xUZN1gdrU/YdAnotJ+oKW2a4YzGB6wNTXnw5+Yn0w/bPnReT4A+nNUrVJ9kyjgnXQkSlkhiejQGg=="], - "@tscircuit/schematic-trace-solver": ["@tscircuit/schematic-trace-solver@0.0.45", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-KFZApwtwoPm5J/whvXz7QVTjz92Uq/SHL18XA/fHKwOK9ihRh71Ztb3gSwBS1u6/EYrKGD26H/T+yYUVk8ULsg=="], + "@tscircuit/schematic-trace-solver": ["@tscircuit/schematic-trace-solver@0.0.96", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-i5M3wIaQtC81k+e2tyy5c4LgWDDPnIPQWR6yfLDdoaC9wKNAxjjJyGg/yZnQGHk+44/HhnrZRwevBblVyNDjdQ=="], "@tscircuit/simple-3d-svg": ["@tscircuit/simple-3d-svg@0.0.41", "", { "dependencies": { "fast-xml-parser": "^5.2.5", "fflate": "^0.8.2" } }, "sha512-2iwhHhMLElq5t0fcC0Gr7cCpZhEOAKh+6NN0NIJ9YWUCcsB7UN8uYko7jqNTxDlYOe6E0ZYaDZWsQ3amOZ3dlw=="], - "@tscircuit/solver-utils": ["@tscircuit/solver-utils@0.0.3", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-NMzqn7NM0SpeHnoWwewcnitxSNczaFsm/WENmBy8dxnFbUkGBdmSY5Gbky8C9e7q8+SzRcwj7GqXE7EWAHTirw=="], + "@tscircuit/solver-utils": ["@tscircuit/solver-utils@0.0.16", "", { "peerDependencies": { "graphics-debug": "*", "typescript": "^5" } }, "sha512-paeEsPt+NOrIdeEb1PQpoNGjl9bD5MfcDaBuhFkn7Hdsxez4cXhKUyxWj3WbJsZzq9nUDW3Utr/Dl3GD4UURZQ=="], "@tscircuit/soup-util": ["@tscircuit/soup-util@0.0.41", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "*" } }, "sha512-47JKWBUKkRVHhad0HhBbdOJxB6v/eiac46beiKRBMlJqiZ1gPGI276v9iZfpF7c4hXR69cURcgiwuA5vowrFEg=="], @@ -309,27 +313,29 @@ "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + "calculate-cell-boundaries": ["calculate-cell-boundaries@0.0.13", "", { "dependencies": { "@tscircuit/solver-utils": "^0.0.19", "lucide-react": "^1.17.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, "peerDependencies": { "typescript": "^5" } }, "sha512-Pkc3DqRCGPhc5AiZMg07qoJdBvd06XN03KgihMF+dwLnXEDICDdmJMpTnRhAgGwqWo2X08ZAWTk6JDoJODYNTg=="], + "calculate-elbow": ["calculate-elbow@0.0.12", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-UkGS4EhabJn1WR6+UyoWpcxhKMx6MxM7+rK+3G0JcaPLMiYlvv5pEuc91unC/nH7kLGHV9xsVavhr5jJ50o+HA=="], - "calculate-packing": ["calculate-packing@0.0.71", "", { "peerDependencies": { "@tscircuit/circuit-json-util": "*", "typescript": "^5" } }, "sha512-tvtzEAV2CJ4ry8sNdSmGV++i68tTDKekYD7ktuTLvUXUvbm2uDgOIckN4bCmi3o3vbr1Gzs4cyafNIOJ8G3Yrg=="], + "calculate-packing": ["calculate-packing@0.0.75", "", { "peerDependencies": { "@tscircuit/circuit-json-util": "*", "typescript": "^5" } }, "sha512-4io94EaD7sE5xAIwUCJo2duA9HFuliFHq18v5tjqRTOvh2OB7WwJHvhWaZ/3k0AfjNfMOFTI+4d0GbUxtbJaqQ=="], "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], "chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="], - "circuit-json": ["circuit-json@0.0.419", "", {}, "sha512-rY99cc6oepIZ3ESSFJw9f88QMWsBfrd5QZMo1QIJQQ58BlaYXfCGEm2kihxjWfBD0egx+LBwis3UUcGFu8PCUA=="], + "circuit-json": ["circuit-json@0.0.447", "", {}, "sha512-yxA/vox8fPuZTsbcfmfiyQoVT3o0lBG+TDh0zWe4+hsJBXC8eE50nq9WA6UiFe27Hd4qO7tmedMNmxUK0xsa9w=="], "circuit-json-to-bpc": ["circuit-json-to-bpc@0.0.13", "", { "peerDependencies": { "bpc-graph": "*", "circuit-json": "*", "typescript": "^5" } }, "sha512-3wSMtPa6tJkiBQN4tsm7f0Mb7Wp90X2c8dNbULoDVE4mGGoFqP1DXqBlyvvZZl+4SjqznzQQ0EioLe2SCQTOcg=="], "circuit-json-to-connectivity-map": ["circuit-json-to-connectivity-map@0.0.23", "", { "dependencies": { "@tscircuit/math-utils": "^0.0.9" }, "peerDependencies": { "typescript": "^5.9.3" } }, "sha512-DSOiXaXOTvjU+7et8ITXb2LjgKto6cQzLv3hReYdXuUNtLw2GVnpOly1G83VcIBcSQ4hRVHI4VMKRyZB3XVzdg=="], - "circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.96", "", { "dependencies": { "@jscad/modeling": "^2.12.6", "earcut": "^3.0.2", "jscad-electronics": "^0.0.129", "jscad-to-gltf": "^0.0.5", "occt-import-js": "^0.0.23" }, "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-js", "@resvg/resvg-wasm"] }, "sha512-7V1cj+WhyPBRsVbgghSCnbJNyWkx/KAhvnZU1Pdp7lZH+iHFIqRyIL/vNRRo657JDGM4bTlVFMUugo+RrseoKw=="], + "circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.105", "", { "dependencies": { "@jscad/modeling": "^2.12.6", "earcut": "^3.0.2", "jscad-electronics": "^0.0.135", "jscad-to-gltf": "^0.0.5", "occt-import-js": "^0.0.23" }, "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-js", "@resvg/resvg-wasm"] }, "sha512-0p9o8QQL2PmI7nn9YuBFUJkZgOLXnvUnaslTfS9/YJnkTR2RVI6dnkSyxFS/4Nbu8y2MIVzXID8nWydQluGHqg=="], "circuit-json-to-simple-3d": ["circuit-json-to-simple-3d@0.0.9", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-thpCtDb9LpAQfGO+Z0hae19sxVAmJAMYM/It9UTMCtyXC3zoUHwRcp/oqtMO/ZIW+JDBhiR8AHmmtKScL2kW7Q=="], - "circuit-json-to-spice": ["circuit-json-to-spice@0.0.34", "", { "dependencies": { "circuit-json-to-connectivity-map": "^0.0.22" }, "peerDependencies": { "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "typescript": "^5.0.0" } }, "sha512-59XyRHATq455875XlEiAfycIvxkOjaKnX4nzzlvY88UJyFcjkHSQCB9HCnbHJGsRxVBEmrTcELLyVIFmB+c4LA=="], + "circuit-json-to-spice": ["circuit-json-to-spice@0.0.43", "", { "dependencies": { "circuit-json-to-connectivity-map": "^0.0.22" }, "peerDependencies": { "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "typescript": "^5.0.0" } }, "sha512-lYXOplosjiYhpWe8IUJ8s9E9G0OH4c+Ygn60lnpco1TEjwD+byUTp3dCk6qDw5VNG5QUdGUD1pe95HoFMzL/TA=="], - "circuit-to-svg": ["circuit-to-svg@0.0.345", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "debug": "^4.4.3", "svg-path-commander": "^2.1.11", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" }, "peerDependencies": { "@tscircuit/alphabet": "*" } }, "sha512-d+P+AFJhWlt9Bdpk9/0zdBBjPxIRgnJaFsGqW/4CG0vEAY2QNqK/OqSl8i0zpFpM4+tiQdeR0n8h1tsvMMhvkA=="], + "circuit-to-svg": ["circuit-to-svg@0.0.384", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "debug": "^4.4.3", "svg-path-commander": "^2.1.11", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" }, "peerDependencies": { "@tscircuit/alphabet": "*" } }, "sha512-N96bzfCSJJ6tR6jrxA3elt4sGV9XLE/vy4NUQ1O9yH+wOiorHdLRi34L0+dkj8lSSupEY4vdQCsYG/6YMJgb7Q=="], "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], @@ -383,8 +389,6 @@ "earcut": ["earcut@3.0.2", "", {}, "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ=="], - "eecircuit-engine": ["eecircuit-engine@1.7.0", "", {}, "sha512-ZDpr/w/H81uCH3n2vjf0vohxOQqQ4NCsvaXkoYwcH+LCxIGKpBdvAIvGN5IdozW6AFJ8tojquKvDya3337yjSQ=="], - "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -409,6 +413,8 @@ "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + "fast-png": ["fast-png@8.0.0", "", { "dependencies": { "fflate": "^0.8.2", "iobuffer": "^6.0.1" } }, "sha512-gCysNasJ8KEMgfdYIKd/wTDo6ENK1PWT0RJO7O+0pgmuHPw2O6tA1WvdxFRJoLf9V8yFYpG0FA1YgI8X97OhJA=="], + "fast-xml-builder": ["fast-xml-builder@1.1.5", "", { "dependencies": { "path-expression-matcher": "^1.1.3" } }, "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA=="], "fast-xml-parser": ["fast-xml-parser@5.7.2", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.5", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w=="], @@ -423,7 +429,7 @@ "flatqueue": ["flatqueue@3.0.0", "", {}, "sha512-y1deYaVt+lIc/d2uIcWDNd0CrdQTO5xoCjeFdhX0kSXvm2Acm0o+3bAOiYklTEoRyzwio3sv3/IiBZdusbAe2Q=="], - "format-si-unit": ["format-si-unit@0.0.3", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-rhw1g1mOoLV497FtKNbzBPE4fJXfWRmIEPRO0DKXpEPvS54vRLjG8e1jE4vOcjZg4bsoOPJkM9jB6yGk+0XKmQ=="], + "format-si-unit": ["format-si-unit@0.0.7", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-wTi2TqGqPG9LvUwhshiMlaert+1kWtxMEzIpKIkVbmOz4bopcDtqpDKV06JT6xpGIquOSFbkV1fQoMHq6UJZ1g=="], "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], @@ -439,7 +445,7 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphics-debug": ["graphics-debug@0.0.89", "", { "dependencies": { "@react-hook/resize-observer": "^2.0.2", "@types/react-router-dom": "^5.3.3", "polished": "^4.3.1", "react-router-dom": "^6.28.0", "react-supergrid": "^1.0.10", "svgson": "^5.3.1", "transformation-matrix": "^3.0.0", "use-mouse-matrix-transform": "^1.3.0" }, "peerDependencies": { "bun-match-svg": "*", "looks-same": "^9.0.1", "typescript": "^5.0.0" }, "bin": { "gd": "dist/cli/cli.js", "graphics-debug": "dist/cli/cli.js" } }, "sha512-fklYB4qChWLkSssabMR1BqjSWWDk21C77IeHBYPREksF34llz/a+gLrW+Oax4eWPT/6TtHZanICMQBhoxGjFYw=="], + "graphics-debug": ["graphics-debug@0.0.95", "", { "dependencies": { "@react-hook/resize-observer": "^2.0.2", "@tscircuit/alphabet": "^0.0.25", "@types/react-router-dom": "^5.3.3", "fast-png": "^8.0.0", "polished": "^4.3.1", "react-router-dom": "^6.28.0", "react-supergrid": "^1.0.10", "svgson": "^5.3.1", "transformation-matrix": "^3.0.0", "use-mouse-matrix-transform": "^1.3.0" }, "peerDependencies": { "bun-match-svg": "*", "looks-same": "^9.0.1", "typescript": "^5.0.0" }, "bin": { "gd": "dist/cli/cli.js", "graphics-debug": "dist/cli/cli.js" } }, "sha512-UETFrQErrBzGXaw5D+hq7t6Z91yrDoItOLJbk5hv8PFfcy0jyVDHb941KyTuCzz/h2rIqpyMODij136aKeM1wg=="], "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="], @@ -449,6 +455,8 @@ "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], + "iobuffer": ["iobuffer@6.0.1", "", {}, "sha512-SZWYkWNfjIXIBYSDpXDYIgshqtbOPsi4lviawAEceR1Kqk+sHDlcQjWrzNQsii80AyBY0q5c8HCTNjqo74ul+Q=="], + "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], "is-buffer": ["is-buffer@1.1.6", "", {}, "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="], @@ -467,7 +475,7 @@ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "jscad-electronics": ["jscad-electronics@0.0.129", "", { "peerDependencies": { "@jscad/modeling": "^2.12.5", "@tscircuit/alphabet": "^0.0.24", "@tscircuit/footprinter": "*", "circuit-json": "^0.0.232", "jscad-fiber": "^0.0.85", "react": "19.1.0", "react-dom": "19.1.0", "three": "^0.179.1" }, "optionalPeers": ["jscad-fiber"] }, "sha512-bYdAxeaqwmzSshJw+BmW8iV/+BXmOXK3fRRmygNkwjMdV/U0YzwaQ4N1qSayt8+QbAJZ9lyrIeK6Q37tQSVvUA=="], + "jscad-electronics": ["jscad-electronics@0.0.135", "", { "peerDependencies": { "@jscad/modeling": "^2.12.5", "@tscircuit/alphabet": "^0.0.24", "@tscircuit/footprinter": "*", "circuit-json": "^0.0.426", "jscad-fiber": "^0.0.85", "react": "19.1.0", "react-dom": "19.1.0", "three": "^0.179.1" }, "optionalPeers": ["jscad-fiber"] }, "sha512-JkOf8+nZvxEEqFWtpRqjOwTRM4GpCimvGzLumkkjjA3iUB2/SmKktB4YBxC2bqnreZ5EU1mf1X2HcVGfLk2zfQ=="], "jscad-planner": ["jscad-planner@0.0.13", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-Lkx7PDT0s90o25dhENrvcYLlgKRvSmhyX7H7LMMq85Hl5ICzirU4MAPxeveKWLlKrdS+4krybVAuKsJ9uvUppg=="], @@ -477,9 +485,9 @@ "kicad-component-converter": ["kicad-component-converter@0.1.40", "", { "bin": { "kicad-mod-converter": "dist/cli.js", "kicad-component-converter": "dist/cli.js" } }, "sha512-k0eJpjeRF5E55Izphx87NzL9iGd5kABovG+1TRCgWktfYGWk3YuUnEZPsBVB5PH01TKA7OE8Oj7CdJcGSxWISw=="], - "kicad-to-circuit-json": ["kicad-to-circuit-json@0.0.32", "", { "dependencies": { "schematic-symbols": "^0.0.202" }, "peerDependencies": { "typescript": "^5" } }, "sha512-S7UvRTHq6qbiVbb0yqx/nVMMR6pLE3qBvLz8K10l23BBQOvkU4CGeN4aYlZ35hFrySViXvsZu+5gz8Vq9ncp4g=="], + "kicad-to-circuit-json": ["kicad-to-circuit-json@0.0.97", "", { "dependencies": { "schematic-symbols": "^0.0.202" }, "peerDependencies": { "typescript": "^5" } }, "sha512-DPZK6ovD2LaHlJO05X/0KfWRlQuKrDLWlBL32lx6UKMOW6wcHFzVIIregsqTUhwqrNFRmJJffWKYtkNcVpbaNw=="], - "kicadts": ["kicadts@0.0.23", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-hBXc9ip3tYpCMCNjW4SzUxv+InJe/6ZfK8Z7meb8P1fN0iSr38IkXwqsVKqArDR9v/LPm0H1vRXh+9Aa+Mv+FA=="], + "kicadts": ["kicadts@0.0.47", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-gNCmlCCzg84T47Uwe2hR8b2MMxwh+gt2lwJPyEsGGCv4HQmZGUoJGe/O0jXLdq8DnPQ8/EA5AM8hZuX0A+HtSw=="], "kind-of": ["kind-of@3.2.2", "", { "dependencies": { "is-buffer": "^1.1.5" } }, "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="], @@ -493,6 +501,10 @@ "looks-same": ["looks-same@9.0.1", "", { "dependencies": { "color-diff": "^1.1.0", "fs-extra": "^8.1.0", "js-graph-algorithms": "1.0.18", "lodash": "^4.17.3", "nested-error-stacks": "^2.1.0", "parse-color": "^1.0.0", "sharp": "0.32.6" } }, "sha512-V+vsT22nLIUdmvxr6jxsbafpJaZvLFnwZhV7BbmN38+v6gL+/BaHnwK9z5UURhDNSOrj3baOgbwzpjINqoZCpA=="], + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "lucide-react": ["lucide-react@1.24.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-YT6mBD8lGKkg4nM39enlm94/sfJIiW0YKUT60fBy4YK8tai31ylg1VhGNWxkpSKHo9UagfnZqwIff3HTDQwXeA=="], + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], @@ -555,7 +567,7 @@ "polished": ["polished@4.3.1", "", { "dependencies": { "@babel/runtime": "^7.17.8" } }, "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA=="], - "poppygl": ["poppygl@0.0.16", "", { "dependencies": { "gl-matrix": "^3.4.4", "pureimage": "^0.4.18", "readable-stream": "^4.7.0" }, "peerDependencies": { "typescript": "^5" } }, "sha512-A29z8dQRyupmLpBU8AurAeAdIYe0nIVuk+o/7PZlhEd4R+SZjt6eY98nnP7g85zcY8FinXtSPysKnMWoo7cz0g=="], + "poppygl": ["poppygl@0.0.25", "", { "dependencies": { "fast-png": "^8.0.0", "gl-matrix": "^3.4.4", "pureimage": "^0.4.18", "readable-stream": "^4.7.0" }, "peerDependencies": { "typescript": "^5" } }, "sha512-QdEseeqb2hp631ZZ5OF5/X1F8hC5VcgWTci2dFDphb8lNO4sNz9WCpROfBBwAuqSWHBaYQweiwqYKitzuF483g=="], "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], @@ -601,7 +613,7 @@ "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "schematic-symbols": ["schematic-symbols@0.0.208", "", { "peerDependencies": { "typescript": "^5.5.4" } }, "sha512-2vW3Kmouu1jVtwHuwa9HBgWLl4NKYoXk1T8rtOCa+tlZhCP/qQRX0YWwo4ZljSoY2fWPwZoEy7RX/CuEBuSA+Q=="], + "schematic-symbols": ["schematic-symbols@0.0.232", "", { "peerDependencies": { "typescript": "^5.5.4" } }, "sha512-gByjhnJepBvKto5rWqBvg59/mCduiiZ0eS85KpfTAaev8nxh5nEPvNDRbe7m/1npGgqwmKKZPjVQqjA2P3P+JA=="], "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -615,8 +627,12 @@ "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "spicets": ["spicets@0.0.2", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-Or30bFInG8QFfgQOj+84fsVMyKC6pFa879PnwyLy0EXWUF3KHKQlqMUSfjuD7KS9bTbGQCVe3eEVrfdHqS7TWQ=="], + "spicey": ["spicey@0.0.14", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-iktSN1BteKEpou3158v25fxGJsNZ4MFeBVV0bZFZ5UZ5NnqusVxVQ1ZrPnCO+2FCmTIBqTD66n0GKMxF6+N/xg=="], + "stack-svgs": ["stack-svgs@0.0.1", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-qcqBlwd5DZdXB+jEc+JUoh3o5zVYfjLrrgtwn7GCvjnoEGaXMPjWQnRotkDNh+uhpXVO7ssNln/JbNnLtIFNQw=="], + "streamx": ["streamx@2.25.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg=="], "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], @@ -657,7 +673,7 @@ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], - "tscircuit": ["tscircuit@0.0.1672", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.452", "@tscircuit/checks": "0.0.124", "@tscircuit/circuit-json-util": "^0.0.94", "@tscircuit/cli": "^0.1.1287", "@tscircuit/copper-pour-solver": "^0.0.23", "@tscircuit/core": "^0.0.1194", "@tscircuit/eval": "^0.0.785", "@tscircuit/footprinter": "^0.0.351", "@tscircuit/infer-cable-insertion-point": "^0.0.2", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.2", "@tscircuit/matchpack": "^0.0.16", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.8", "@tscircuit/props": "^0.0.513", "@tscircuit/runframe": "^0.0.1873", "@tscircuit/schematic-match-adapt": "^0.0.16", "@tscircuit/schematic-trace-solver": "^v0.0.45", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.3", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-elbow": "^0.0.12", "calculate-packing": "0.0.71", "circuit-json": "^0.0.419", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.23", "circuit-json-to-gltf": "^0.0.96", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.34", "circuit-to-svg": "^0.0.345", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.3", "graphics-debug": "^0.0.89", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.32", "kicadts": "^0.0.23", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.16", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.208", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-vNOJwMPflMbSM7IS0rvXOz7BPfHt/lg7mM8U0w8b61xh4q5XMy60K7JfReF//qpdnhdPQPq+IqUPnMYaXFcltQ=="], + "tscircuit": ["tscircuit@0.0.2067", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", "@resvg/resvg-js": "^2.6.2", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-typescript": "^12.3.0", "@tscircuit/alphabet": "0.0.25", "@tscircuit/capacity-autorouter": "^0.0.665", "@tscircuit/checks": "0.0.142", "@tscircuit/circuit-json-util": "^0.0.97", "@tscircuit/cli": "^0.1.1660", "@tscircuit/copper-pour-solver": "0.0.39", "@tscircuit/core": "^0.0.1437", "@tscircuit/eval": "^0.0.1003", "@tscircuit/footprinter": "^0.0.371", "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.2", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/internal-dynamic-import": "^0.0.10", "@tscircuit/krt-wasm": "^0.1.1", "@tscircuit/matchpack": "^0.0.34", "@tscircuit/math-utils": "^0.0.36", "@tscircuit/miniflex": "^0.0.4", "@tscircuit/ngspice-spice-engine": "^0.0.19", "@tscircuit/props": "^0.0.574", "@tscircuit/runframe": "^0.0.2201", "@tscircuit/schematic-match-adapt": "^0.0.18", "@tscircuit/schematic-trace-solver": "^0.0.96", "@tscircuit/simple-3d-svg": "^0.0.41", "@tscircuit/solver-utils": "^0.0.16", "@tscircuit/soup-util": "^0.0.41", "bpc-graph": "^0.0.57", "calculate-cell-boundaries": "^0.0.13", "calculate-elbow": "^0.0.12", "calculate-packing": "0.0.75", "circuit-json": "^0.0.447", "circuit-json-to-bpc": "^0.0.13", "circuit-json-to-connectivity-map": "^0.0.23", "circuit-json-to-gltf": "^0.0.105", "circuit-json-to-simple-3d": "^0.0.9", "circuit-json-to-spice": "^0.0.43", "circuit-to-svg": "^0.0.384", "comlink": "^4.4.2", "connectivity-map": "^1.0.0", "css-select": "5.1.0", "debug": "^4.3.6", "flatbush": "^4.5.0", "format-si-unit": "^0.0.7", "graphics-debug": "^0.0.95", "jscad-planner": "^0.0.13", "kicad-component-converter": "^0.1.40", "kicad-to-circuit-json": "^0.0.97", "kicadts": "^0.0.47", "minicssgrid": "^0.0.9", "performance-now": "^2.1.0", "poppygl": "^0.0.25", "react": "^19.1.0", "react-dom": "^19.1.0", "rollup": "^4.53.2", "rollup-plugin-dts": "^6.2.3", "s-expression": "^3.1.1", "schematic-symbols": "^0.0.232", "spicets": "^0.0.2", "spicey": "^0.0.14", "sucrase": "^3.35.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1", "tslib": "^2.8.1", "zod": "^3.25.67" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "tsci": "cli.mjs", "tscircuit": "cli.mjs" } }, "sha512-7Yu0/oE1VsHyx3/VydfVKEfqY3Mfrls3xvWTQAmOyCtGq+TrYnzQRwx8AI3RIEDstV/oYRT+3UNcnnN5PtFCdA=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -691,6 +707,12 @@ "bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "calculate-cell-boundaries/@tscircuit/solver-utils": ["@tscircuit/solver-utils@0.0.19", "", { "peerDependencies": { "graphics-debug": "*", "typescript": "^5" } }, "sha512-UPUVgRRIrylSMJfKw7QwhSCvlODD+uAAwXc9jpOG06ipqteeeLRkj/HtHns31KQfLjRCSsGTvxMYBjmhaDDLGg=="], + + "calculate-cell-boundaries/react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "calculate-cell-boundaries/react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + "circuit-json-to-connectivity-map/@tscircuit/math-utils": ["@tscircuit/math-utils@0.0.9", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-sPzfXndijet8z29X6f5vnSZddiso2tRg7m6rB+268bVj60mxnxUMD14rKuMlLn6n84fMOpD/X7pRTZUfi6M+Tg=="], "circuit-json-to-spice/circuit-json-to-connectivity-map": ["circuit-json-to-connectivity-map@0.0.22", "", { "dependencies": { "@tscircuit/math-utils": "^0.0.9" }, "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-HN8DiISjZZLTglGEkYNRpKeQ/DMG4dDo5j4Hck0UGSJbpux9aFwtJOGszMf06Inh/gu5oKBrpZJIeWxaNacKUg=="], @@ -707,6 +729,8 @@ "use-mouse-matrix-transform/transformation-matrix": ["transformation-matrix@3.1.0", "", {}, "sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA=="], + "calculate-cell-boundaries/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + "circuit-json-to-spice/circuit-json-to-connectivity-map/@tscircuit/math-utils": ["@tscircuit/math-utils@0.0.9", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-sPzfXndijet8z29X6f5vnSZddiso2tRg7m6rB+268bVj60mxnxUMD14rKuMlLn6n84fMOpD/X7pRTZUfi6M+Tg=="], "prebuild-install/tar-fs/tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], diff --git a/index.tsx b/index.tsx index a34bf53..aa69f51 100644 --- a/index.tsx +++ b/index.tsx @@ -6,3 +6,4 @@ export * from "./lib/XiaoBoard/XiaoReceiver.circuit" export * from "./lib/ProMicroBoard/ProMicroBoard.circuit" // export * from "./Common Boards/RaspberryPiHatBoard/RaspberryPiHatBoard.circuit" export * from "./lib/ViaGridBoard/ViaGridBoard.circuit" +export * from "./lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit" diff --git a/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx new file mode 100644 index 0000000..dac98dd --- /dev/null +++ b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx @@ -0,0 +1,818 @@ +import type { ChipProps, SubcircuitProps } from "@tscircuit/props" +import { RP2040 } from "./imports/RP2040" +import { TYPE_C_16PIN_2MD_073_ } from "./imports/TYPE_C_16PIN_2MD_073_" +import { W25Q16JVUXIQ } from "./imports/W25Q16JVUXIQ" +import { AP2112K_3_3TRG1 } from "./imports/AP2112K_3_3TRG1" +import { X322512MSB4SI } from "./imports/X322512MSB4SI" +import { SKRPACE010 } from "./imports/SKRPACE010" +import { B5819W_SL } from "./imports/B5819W_SL" +import { XL_1608SURC_06 } from "./imports/XL_1608SURC_06" + +const denseTraceProps = { thickness: "0.1mm" } as const +const gndLabel = { displayName: "GND", schDisplayLabel: "GND" } as const +const vbusLabel = { displayName: "VBUS", schDisplayLabel: "VBUS" } as const +const vsysLabel = { displayName: "VSYS", schDisplayLabel: "VSYS" } as const +const v3v3Label = { displayName: "V3V3", schDisplayLabel: "V3V3" } as const +const v1v1Label = { displayName: "V1V1", schDisplayLabel: "V1V1" } as const +const adcRefLabel = { + displayName: "ADC_REF", + schDisplayLabel: "ADC_REF", +} as const +const schSections = { + rp2040: "rp2040", + usb: "usb", + power: "power", + flash: "flash", + clock: "clock", + controls: "controls", + display: "display", + status: "status", + debug: "debug", +} as const + +export type MicrocontrollerRP2040Props = Omit< + SubcircuitProps, + "children" | "connections" +> & { + connections?: ChipProps["connections"] +} + +/** + * Complete Pico-style RP2040 support circuit adapted from + * https://tscircuit.com/abse/gameboy. + */ +export const Microcontroller_RP2040 = ({ + name = "Microcontroller_RP2040", + connections, + ...props +}: MicrocontrollerRP2040Props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* RUN pullup */} + + + + {/* TESTEN */} + + + {/* Flash decoupling */} + + + + {/* IOVDD decoupling */} + + + + + + + {/* USB_VDD decoupling */} + + + + {/* ADC decoupling */} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +) diff --git a/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx new file mode 100644 index 0000000..829902d --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx @@ -0,0 +1,108 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["VIN"], + pin2: ["GND"], + pin3: ["EN"], + pin4: ["NC"], + pin5: ["VOUT"], +} as const + +export const AP2112K_3_3TRG1 = (props: ChipProps) => { + return ( + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C23380830.obj?uuid=8c971aea3af54c53b74baeb1f489d393", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C23380830.step?uuid=8c971aea3af54c53b74baeb1f489d393", + pcbRotationOffset: 90, + modelOriginPosition: { x: 0, y: 0, z: -0.7 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx b/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx new file mode 100644 index 0000000..d24e8f0 --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx @@ -0,0 +1,140 @@ +import type { DiodeProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["cathode", "neg"], + pin2: ["anode", "pos"], +} as const + +export const B5819W_SL = (props: DiodeProps) => { + const { name = "D1", ...restProps } = props + + return ( + + + + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C8598.obj?uuid=e9d505c99b6c436aaf827a29c5ba4f84", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C8598.step?uuid=e9d505c99b6c436aaf827a29c5ba4f84", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 0.000012699999999199463, z: -0.6 }, + }} + {...restProps} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/RP2040.tsx b/lib/Microcontroller_RP2040/imports/RP2040.tsx new file mode 100644 index 0000000..042d9c9 --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/RP2040.tsx @@ -0,0 +1,652 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["IOVDD6"], + pin2: ["GPIO0"], + pin3: ["GPIO1"], + pin4: ["GPIO2"], + pin5: ["GPIO3"], + pin6: ["GPIO4"], + pin7: ["GPIO5"], + pin8: ["GPIO6"], + pin9: ["GPIO7"], + pin10: ["IOVDD5"], + pin11: ["GPIO8"], + pin12: ["GPIO9"], + pin13: ["GPIO10"], + pin14: ["GPIO11"], + pin15: ["GPIO12"], + pin16: ["GPIO13"], + pin17: ["GPIO14"], + pin18: ["GPIO15"], + pin19: ["TESTEN"], + pin20: ["XIN"], + pin21: ["XOUT"], + pin22: ["IOVDD4"], + pin23: ["DVDD2"], + pin24: ["SWCLK"], + pin25: ["SWD"], + pin26: ["RUN"], + pin27: ["GPIO16"], + pin28: ["GPIO17"], + pin29: ["GPIO18"], + pin30: ["GPIO19"], + pin31: ["GPIO20"], + pin32: ["GPIO21"], + pin33: ["IOVDD3"], + pin34: ["GPIO22"], + pin35: ["GPIO23"], + pin36: ["GPIO24"], + pin37: ["GPIO25"], + pin38: ["GPIO26_ADC0"], + pin39: ["GPIO27_ADC1"], + pin40: ["GPIO28_ADC2"], + pin41: ["GPIO29_ADC3"], + pin42: ["IOVDD2"], + pin43: ["ADC_AVDD"], + pin44: ["VREG_IN"], + pin45: ["VREG_VOUT"], + pin46: ["USB_DM"], + pin47: ["USB_DP"], + pin48: ["USB_VDD"], + pin49: ["IOVDD1"], + pin50: ["DVDD1"], + pin51: ["QSPI_SD3"], + pin52: ["QSPI_SCLK"], + pin53: ["QSPI_SD0"], + pin54: ["QSPI_SD2"], + pin55: ["QSPI_SD1"], + pin56: ["QSPI_SS"], + pin57: ["GND"], +} as const + +export const RP2040 = (props: ChipProps) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2040.obj?uuid=76b360a9d4c54384a4e47d7e5af156df", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2040.step?uuid=76b360a9d4c54384a4e47d7e5af156df", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 0, z: -0.02 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx b/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx new file mode 100644 index 0000000..5a809b1 --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx @@ -0,0 +1,153 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["pin1"], + pin2: ["pin2"], + pin3: ["pin3"], + pin4: ["pin4"], +} as const + +export const SKRPACE010 = (props: ChipProps) => { + return ( + + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C139797.obj?uuid=00d848a7e8384bbd9286566957e8bb9c", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C139797.step?uuid=00d848a7e8384bbd9286566957e8bb9c", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 0, z: -0.01 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx b/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx new file mode 100644 index 0000000..437f047 --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx @@ -0,0 +1,241 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin13: ["EH1"], + pin14: ["EH2"], + pin15: ["pin13_alt1"], + pin16: ["pin14_alt1"], + pin17: ["A1B12"], + pin18: ["A4B9"], + pin19: ["B8"], + pin20: ["A5"], + pin21: ["B7"], + pin22: ["A6"], + pin23: ["A7"], + pin24: ["B6"], + pin25: ["A8"], + pin26: ["B5"], + pin27: ["B4A9"], + pin28: ["B1A12"], +} as const + +export const TYPE_C_16PIN_2MD_073_ = (props: ChipProps) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2765186.obj?uuid=4ee8413127e64716b804db03d4b340ae", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2765186.step?uuid=4ee8413127e64716b804db03d4b340ae", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 1.3249976000000152, z: -1.6800018 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx b/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx new file mode 100644 index 0000000..71afa6b --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx @@ -0,0 +1,138 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["CS"], + pin2: ["pin2"], + pin3: ["pin3"], + pin4: ["GND"], + pin5: ["pin5"], + pin6: ["CLK"], + pin7: ["pin7"], + pin8: ["VCC"], + pin9: ["EP"], +} as const + +export const W25Q16JVUXIQ = (props: ChipProps) => { + return ( + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2843335.obj?uuid=2b35e1c3dcc44b77887d4f445b51370a", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C2843335.step?uuid=2b35e1c3dcc44b77887d4f445b51370a", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 0, z: 0 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx b/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx new file mode 100644 index 0000000..0929218 --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx @@ -0,0 +1,97 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["OSC1"], + pin2: ["GND1"], + pin3: ["OSC2"], + pin4: ["GND2"], +} as const + +export const X322512MSB4SI = (props: ChipProps) => { + return ( + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C9002.obj?uuid=02485e56ba8d4732a26526d2983fc729", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C9002.step?uuid=02485e56ba8d4732a26526d2983fc729", + pcbRotationOffset: 0, + modelOriginPosition: { x: 0, y: 0, z: 0 }, + }} + {...props} + /> + ) +} diff --git a/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx b/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx new file mode 100644 index 0000000..73fa20e --- /dev/null +++ b/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx @@ -0,0 +1,146 @@ +import type { LedProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["cathode", "neg"], + pin2: ["anode", "pos"], +} as const + +export const XL_1608SURC_06 = (props: LedProps) => { + const { name = "LED1", ...restProps } = props + + return ( + + + + + + + + + + + + + + + + + + + } + cadModel={{ + objUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C965799.obj?uuid=d0740cb8891c49a88b6949cb978926f3", + stepUrl: + "https://modelcdn.tscircuit.com/easyeda_models/assets/C965799.step?uuid=d0740cb8891c49a88b6949cb978926f3", + pcbRotationOffset: 0, + modelOriginPosition: { + x: -0.000012700000070253736, + y: 0.00005079999993995443, + z: -0.01, + }, + }} + {...restProps} + /> + ) +} diff --git a/package.json b/package.json index 51054ed..2f305d0 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@biomejs/biome": "^2.2.4", "@types/react": "^19.1.12", - "tscircuit": "^0.0.1672", + "tscircuit": "^0.0.2067", "tsup": "^8.5.0" } } diff --git a/tests/test.test.tsx b/tests/test.test.tsx index 2dd3155..d74acf5 100644 --- a/tests/test.test.tsx +++ b/tests/test.test.tsx @@ -1,13 +1,60 @@ import { test, expect } from "bun:test" +import { Circuit } from "tscircuit" import { ArduinoShield } from "../lib/ArduinoShield/ArduinoShield.circuit" import { RaspberryPiHatBoard } from "../lib/RaspberryPiHatBoard/RaspberryPiHatBoard.circuit" import { MicroModBoard } from "../lib/MicroModBoard/MicroModBoard" import { XiaoBoard } from "../lib/XiaoBoard/XiaoBoard.circuit" +import { Microcontroller_RP2040 } from "../index" test("test", () => { expect(ArduinoShield).toBeDefined() expect(RaspberryPiHatBoard).toBeDefined() expect(MicroModBoard).toBeDefined() expect(XiaoBoard).toBeDefined() // TODO: Add tests + expect(Microcontroller_RP2040).toBeDefined() +}) + +test("Microcontroller_RP2040 creates a named, positionable subcircuit", () => { + const element = Microcontroller_RP2040({ + name: "MCU", + pcbX: 12, + pcbY: -4, + pcbRotation: 90, + }) as any + + expect(element.type).toBe("subcircuit") + expect(element.props.name).toBe("MCU") + expect(element.props.pcbX).toBe(12) + expect(element.props.pcbY).toBe(-4) + expect(element.props.pcbRotation).toBe(90) +}) + +test("Microcontroller_RP2040 renders its complete support circuit", async () => { + const circuit = new Circuit() + + circuit.add( + + + , + ) + + await circuit.renderUntilSettled() + + expect(circuit.db.source_group.getWhere({ name: "MCU" })).toBeDefined() + expect( + circuit.db.source_component + .list() + .some((component) => component.manufacturer_part_number === "RP2040"), + ).toBe(true) + expect(circuit.db.pcb_component.list().length).toBeGreaterThan(0) + expect(circuit.db.source_net.getWhere({ name: "USER_IO" })).toBeDefined() + expect( + circuit + .getCircuitJson() + .filter((element) => element.type.endsWith("_error")), + ).toEqual([]) }) test("ArduinoShield forwards explicit boardProps and chipProps", () => { From 440572f8b12c9f25ea8abfe5e1d3536699dfa43a Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 13 Jul 2026 14:59:02 -0700 Subject: [PATCH 2/7] Use footprinter strings for exact RP2040 footprints --- .../imports/B5819W_SL.tsx | 111 +--- lib/Microcontroller_RP2040/imports/RP2040.tsx | 573 +----------------- .../imports/XL_1608SURC_06.tsx | 113 +--- tests/test.test.tsx | 34 +- 4 files changed, 35 insertions(+), 796 deletions(-) diff --git a/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx b/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx index d24e8f0..43da51f 100644 --- a/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx +++ b/lib/Microcontroller_RP2040/imports/B5819W_SL.tsx @@ -16,116 +16,7 @@ export const B5819W_SL = (props: DiodeProps) => { jlcpcb: ["C8598"], }} manufacturerPartNumber="B5819W_SL" - footprint={ - - - - - - - - - - - - - - - - - - - } + footprint="sod123w_p3.4mm_pw0.95mm" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C8598.obj?uuid=e9d505c99b6c436aaf827a29c5ba4f84", diff --git a/lib/Microcontroller_RP2040/imports/RP2040.tsx b/lib/Microcontroller_RP2040/imports/RP2040.tsx index 042d9c9..163e457 100644 --- a/lib/Microcontroller_RP2040/imports/RP2040.tsx +++ b/lib/Microcontroller_RP2040/imports/RP2040.tsx @@ -57,7 +57,7 @@ const pinLabels = { pin54: ["QSPI_SD2"], pin55: ["QSPI_SD1"], pin56: ["QSPI_SS"], - pin57: ["GND"], + pin57: ["GND", "thermalpad"], } as const export const RP2040 = (props: ChipProps) => { @@ -68,576 +68,7 @@ export const RP2040 = (props: ChipProps) => { jlcpcb: ["C2040"], }} manufacturerPartNumber="RP2040" - footprint={ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } + footprint="qfn56_thermalpad3.1mmx3.1mm_p0.4001mm_w7.8999mm_h7.9001mm_pw0.2mm_pl0.85mm" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2040.obj?uuid=76b360a9d4c54384a4e47d7e5af156df", diff --git a/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx b/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx index 73fa20e..bc4b9e7 100644 --- a/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx +++ b/lib/Microcontroller_RP2040/imports/XL_1608SURC_06.tsx @@ -16,118 +16,7 @@ export const XL_1608SURC_06 = (props: LedProps) => { jlcpcb: ["C965799"], }} manufacturerPartNumber="XL_1608SURC_06" - footprint={ - - - - - - - - - - - - - - - - - - - } + footprint="led_p1.498mm_pw0.8mm_ph0.8mm" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C965799.obj?uuid=d0740cb8891c49a88b6949cb978926f3", diff --git a/tests/test.test.tsx b/tests/test.test.tsx index d74acf5..e3f9859 100644 --- a/tests/test.test.tsx +++ b/tests/test.test.tsx @@ -42,6 +42,35 @@ test("Microcontroller_RP2040 renders its complete support circuit", async () => await circuit.renderUntilSettled() + const circuitJson = circuit.getCircuitJson() as any[] + const rp2040 = circuitJson.find( + (element) => + element.type === "source_component" && + element.manufacturer_part_number === "RP2040", + ) + const rp2040PcbComponent = circuitJson.find( + (element) => + element.type === "pcb_component" && + element.source_component_id === rp2040.source_component_id, + ) + const groundPort = circuitJson.find( + (element) => + element.type === "source_port" && + element.source_component_id === rp2040.source_component_id && + element.pin_number === 57, + ) + const thermalPad = circuitJson.find( + (element) => + element.type === "pcb_smtpad" && + element.pcb_component_id === rp2040PcbComponent.pcb_component_id && + element.port_hints?.includes("thermalpad"), + ) + const thermalPadPort = circuitJson.find( + (element) => + element.type === "pcb_port" && + element.pcb_port_id === thermalPad.pcb_port_id, + ) + expect(circuit.db.source_group.getWhere({ name: "MCU" })).toBeDefined() expect( circuit.db.source_component @@ -50,10 +79,9 @@ test("Microcontroller_RP2040 renders its complete support circuit", async () => ).toBe(true) expect(circuit.db.pcb_component.list().length).toBeGreaterThan(0) expect(circuit.db.source_net.getWhere({ name: "USER_IO" })).toBeDefined() + expect(thermalPadPort.source_port_id).toBe(groundPort.source_port_id) expect( - circuit - .getCircuitJson() - .filter((element) => element.type.endsWith("_error")), + circuitJson.filter((element) => element.type.endsWith("_error")), ).toEqual([]) }) From 4b8424805b58d1be6b0edb1e2442e4a999f0553d Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 13 Jul 2026 15:33:17 -0700 Subject: [PATCH 3/7] Add RP2040 USB-C usage example --- .../MicrocontrollerRP2040WithUsbC.circuit.tsx | 9 + ...trollerRP2040WithUsbC.circuit-pcb.snap.svg | 1 + ...rRP2040WithUsbC.circuit-schematic.snap.svg | 334 ++++++++++++++++++ 3 files changed, 344 insertions(+) create mode 100644 examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx create mode 100644 examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg create mode 100644 examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-schematic.snap.svg diff --git a/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx b/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx new file mode 100644 index 0000000..17430d5 --- /dev/null +++ b/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx @@ -0,0 +1,9 @@ +import { Microcontroller_RP2040 } from "../../index" + +export default function MicrocontrollerRP2040WithUsbC() { + return ( + + + + ) +} diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg new file mode 100644 index 0000000..6442749 --- /dev/null +++ b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg @@ -0,0 +1 @@ +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-schematic.snap.svg b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-schematic.snap.svg new file mode 100644 index 0000000..84c703d --- /dev/null +++ b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-schematic.snap.svg @@ -0,0 +1,334 @@ +D_VBUSR_3V3_EN100kΩC_IOVDD5100nFC_IOVDD6100nFC_IOVDD3100nFC_IOVDD4100nFR_RUN10kΩC_FLASH100nFC_IOVDD1100nFC_IOVDD2100nFC_USB_VDD100nFC_ADC100nFTYPE_C_16PIN_2MD_073_J_USB13EH114EH215pin13_alt116pin14_alt117A1B1218A4B919B820A521B722A623A724B625A826B527B4A928B1A12RP2040U11IOVDD62GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD511GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD423DVDD224SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD334GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD243ADC_AVDD44VREG_IN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD150DVDD151QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS57GND/thermalpadW25Q16JVUXIQU21CS234GND56CLK78VCC9EPAP2112K_3_3TRG1U31VIN2GND3EN4NC5VOUTX322512MSB4SIY11OSC12GND13OSC24GND2SKRPACE010SW_BOOT1234SKRPACE010SW_RUN1234D1D_PWRR_BOOT10kΩR_LED330ΩR_PWR_LED330ΩR_CC15.1kΩR_CC25.1kΩR_USB127ΩR_USB227ΩC_VBUS10uFC_3V310uFC_CORE1uFC_USB1uFC_XIN18pFC_XOUT18pFL_AVDD600MHTP_SWCLKTP_GNDTP_SWDIOTP_3V3VSYSVSYSVBUSVBUSVBUSVBUSEN_RV3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3GNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDRUN_RRUN_RRUN_RADC_VREFADC_VREFCC1CC1USB_DN_BUSB_DP_AUSB_DP_ACC2XINXINXOUTXOUTV1V1V1V1SWCLKSWCLKSWDSWDLED_GP25LED_GP25USB_DNUSB_DNUSB_DPUSB_DPQSPI_SD3QSPI_SD3QSPI_SCLKQSPI_SCLKQSPI_SD0QSPI_SD0QSPI_SD2QSPI_SD2QSPI_SD1QSPI_SD1QSPI_SSQSPI_SSQSPI_SSQSPI_SSLED_D1PLED_D \ No newline at end of file From 229280dfc3ac2002bc91aefede47a15776f2e940 Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 13 Jul 2026 15:45:43 -0700 Subject: [PATCH 4/7] Route RP2040 USB-C example --- .../MicrocontrollerRP2040WithUsbC.circuit.tsx | 7 ++++++- .../MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg | 2 +- .../Microcontroller_RP2040.circuit.tsx | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx b/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx index 17430d5..26c6f6a 100644 --- a/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx +++ b/examples/MicrocontrollerRP2040WithUsbC/MicrocontrollerRP2040WithUsbC.circuit.tsx @@ -2,7 +2,12 @@ import { Microcontroller_RP2040 } from "../../index" export default function MicrocontrollerRP2040WithUsbC() { return ( - + ) diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg index 6442749..def6248 100644 --- a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg +++ b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg @@ -1 +1 @@ -D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx index dac98dd..0d328d7 100644 --- a/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx +++ b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx @@ -329,7 +329,7 @@ export const Microcontroller_RP2040 = ({ From 9eeb451454507a45264bf16670e1697f3169788a Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 20 Jul 2026 11:37:05 -0700 Subject: [PATCH 5/7] Replace RP2040 imports with footprinter strings --- bun.lock | 3 +- ...trollerRP2040WithUsbC.circuit-pcb.snap.svg | 2 +- .../Microcontroller_RP2040.circuit.tsx | 2 +- ...icrocontroller_RP2040.circuit-pcb.snap.svg | 1 + ...ntroller_RP2040.circuit-schematic.snap.svg | 334 ++++++++++++++++++ .../imports/AP2112K_3_3TRG1.tsx | 82 +---- .../imports/SKRPACE010.tsx | 125 +------ .../imports/TYPE_C_16PIN_2MD_073_.tsx | 201 +---------- .../imports/W25Q16JVUXIQ.tsx | 105 +----- .../imports/X322512MSB4SI.tsx | 69 +--- package.json | 1 + 11 files changed, 347 insertions(+), 578 deletions(-) create mode 100644 lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg create mode 100644 lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg diff --git a/bun.lock b/bun.lock index 52204a3..065f0fd 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,7 @@ "name": "@tscircuit/common", "devDependencies": { "@biomejs/biome": "^2.2.4", + "@tscircuit/footprinter": "^0.0.379", "@types/react": "^19.1.12", "tscircuit": "^0.0.2067", "tsup": "^8.5.0", @@ -221,7 +222,7 @@ "@tscircuit/eval": ["@tscircuit/eval@0.0.1003", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-WAJjlcSZ8q/eJ61yiwqXp52qBmZsXlHRXQSUnLQbaxVx+6ypZzP3hHpI+GMxtEYDL/m2eFw9sIgn7VbqK9iGwg=="], - "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.371", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-noJYnhwF0vx1AcNl8X+Iy0LYWPQ37S6rGAipa7k8yux8VLcrYPtwYQ/lD+E1zZkg+NAtqbkoGELyzLdSqwsANA=="], + "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.379", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-PKAlfTmRqLQt8OUrXji//Yola5vRdXr2ttF1b+yDXtBcdihIAhVh7qsNsxfQW9SMAeELlFdctJOET5/+q4cB0Q=="], "@tscircuit/image-utils": ["@tscircuit/image-utils@0.0.8", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "color-diff": "^1.4.0", "fast-png": "^8.0.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1" } }, "sha512-/a/dyd0Ly+YSk73pNXi0M02nfaiZ1NQ8PVNDBTOHHESyTOrNHiVAT+NWxsWi44gHZ/ivLegAmjxSSbSSGfU+sQ=="], diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg index def6248..87c6751 100644 --- a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg +++ b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg @@ -1 +1 @@ -D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx index 0d328d7..597257d 100644 --- a/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx +++ b/lib/Microcontroller_RP2040/Microcontroller_RP2040.circuit.tsx @@ -322,7 +322,7 @@ export const Microcontroller_RP2040 = ({ schSectionName={schSections.power} pcbX={-7.2} pcbY={20.2} - pcbRotation={0} + pcbRotation={180} schHeight={0.6} /> diff --git a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg new file mode 100644 index 0000000..f7858ce --- /dev/null +++ b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg @@ -0,0 +1 @@ +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg new file mode 100644 index 0000000..530c2c3 --- /dev/null +++ b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg @@ -0,0 +1,334 @@ +D_VBUSR_3V3_EN100kΩC_IOVDD5100nFC_IOVDD6100nFC_IOVDD3100nFC_IOVDD4100nFR_RUN10kΩC_FLASH100nFC_IOVDD1100nFC_IOVDD2100nFC_USB_VDD100nFC_ADC100nFTYPE_C_16PIN_2MD_073_J_USB13EH114EH215pin13_alt116pin14_alt117A1B1218A4B919B820A521B722A623A724B625A826B527B4A928B1A12RP2040U11IOVDD62GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD511GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD423DVDD224SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD334GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD243ADC_AVDD44VREG_IN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD150DVDD151QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS57GND/thermalpadW25Q16JVUXIQU21CS234GND56CLK78VCC9EPAP2112K_3_3TRG1U31VIN2GND3EN4NC5VOUTX322512MSB4SIY11OSC12GND13OSC24GND2SKRPACE010SW_BOOT1234SKRPACE010SW_RUN1234D1D_PWRR_BOOT10kΩR_LED330ΩR_PWR_LED330ΩR_CC15.1kΩR_CC25.1kΩR_USB127ΩR_USB227ΩC_VBUS10uFC_3V310uFC_CORE1uFC_USB1uFC_XIN18pFC_XOUT18pFL_AVDD600MHTP_SWCLKTP_GNDTP_SWDIOTP_3V3VSYSVSYSVBUSVBUSVBUSVBUSEN_RV3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3V3GNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDGNDRUN_RRUN_RRUN_RADC_VREFADC_VREFCC1CC1USB_DN_BUSB_DP_AUSB_DP_ACC2XINXINXOUTXOUTV1V1V1V1SWCLKSWCLKSWDSWDLED_GP25LED_GP25USB_DNUSB_DNUSB_DPUSB_DPQSPI_SD3QSPI_SD3QSPI_SCLKQSPI_SCLKQSPI_SD0QSPI_SD0QSPI_SD2QSPI_SD2QSPI_SD1QSPI_SD1QSPI_SSQSPI_SSQSPI_SSQSPI_SSLED_D1PLED_D diff --git a/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx index 829902d..d971cd8 100644 --- a/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx +++ b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx @@ -16,90 +16,14 @@ export const AP2112K_3_3TRG1 = (props: ChipProps) => { jlcpcb: ["C23380830"], }} manufacturerPartNumber="AP2112K_3_3TRG1" - footprint={ - - - - - - - - - - - - - } + footprint="dfn6_missing(5)_p0.95mm_w3.2001mm" + pcbRotation={180} cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C23380830.obj?uuid=8c971aea3af54c53b74baeb1f489d393", stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C23380830.step?uuid=8c971aea3af54c53b74baeb1f489d393", - pcbRotationOffset: 90, + pcbRotationOffset: -90, modelOriginPosition: { x: 0, y: 0, z: -0.7 }, }} {...props} diff --git a/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx b/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx index 5a809b1..4c4d104 100644 --- a/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx +++ b/lib/Microcontroller_RP2040/imports/SKRPACE010.tsx @@ -15,130 +15,7 @@ export const SKRPACE010 = (props: ChipProps) => { jlcpcb: ["C139797"], }} manufacturerPartNumber="SKRPACE010" - footprint={ - - - - - - - - - - - - - - - - - } + footprint="smdpushbutton" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C139797.obj?uuid=00d848a7e8384bbd9286566957e8bb9c", diff --git a/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx b/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx index 437f047..0e6a58c 100644 --- a/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx +++ b/lib/Microcontroller_RP2040/imports/TYPE_C_16PIN_2MD_073_.tsx @@ -27,206 +27,7 @@ export const TYPE_C_16PIN_2MD_073_ = (props: ChipProps) => { jlcpcb: ["C2765186"], }} manufacturerPartNumber="TYPE_C_16PIN_2MD_073_" - footprint={ - - - - - - - - - - - - - - - - - - - - - - - - - - - - } + footprint="usbcmidmount16_pinstart13" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2765186.obj?uuid=4ee8413127e64716b804db03d4b340ae", diff --git a/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx b/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx index 71afa6b..fc466f2 100644 --- a/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx +++ b/lib/Microcontroller_RP2040/imports/W25Q16JVUXIQ.tsx @@ -20,110 +20,7 @@ export const W25Q16JVUXIQ = (props: ChipProps) => { jlcpcb: ["C2843335"], }} manufacturerPartNumber="W25Q16JVUXIQ" - footprint={ - - - - - - - - - - - - - - - - } + footprint="wson" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2843335.obj?uuid=2b35e1c3dcc44b77887d4f445b51370a", diff --git a/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx b/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx index 0929218..b71cbc8 100644 --- a/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx +++ b/lib/Microcontroller_RP2040/imports/X322512MSB4SI.tsx @@ -15,74 +15,7 @@ export const X322512MSB4SI = (props: ChipProps) => { jlcpcb: ["C9002"], }} manufacturerPartNumber="X322512MSB4SI" - footprint={ - - - - - - - - - - - } + footprint="crystal" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C9002.obj?uuid=02485e56ba8d4732a26526d2983fc729", diff --git a/package.json b/package.json index 2f305d0..d2fef07 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ }, "devDependencies": { "@biomejs/biome": "^2.2.4", + "@tscircuit/footprinter": "^0.0.379", "@types/react": "^19.1.12", "tscircuit": "^0.0.2067", "tsup": "^8.5.0" From 83cfcd7dbaa107599aecc16feda09ab8c7795546 Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 20 Jul 2026 15:39:52 -0700 Subject: [PATCH 6/7] Encode RP2040 footprint orientation and refresh snapshots --- bun.lock | 6 ++++-- ...ntrollerRP2040WithUsbC.circuit-3d.snap.png | Bin 0 -> 17628 bytes ...trollerRP2040WithUsbC.circuit-pcb.snap.svg | 2 +- .../ArduinoShield.circuit-3d.snap.png | Bin 16999 -> 9326 bytes .../ArduinoShield.circuit-pcb.snap.svg | 2 +- .../ArduinoShield.circuit-schematic.snap.svg | 19 +++--------------- .../CM5Receiver.circuit-3d.snap.png | Bin 13048 -> 5856 bytes .../CM5Receiver.circuit-pcb.snap.svg | 2 +- .../CM5Receiver.circuit-schematic.snap.svg | 19 +++--------------- .../MicroModBoardFunction.circuit-3d.snap.png | Bin 13554 -> 6176 bytes ...MicroModBoardFunction.circuit-pcb.snap.svg | 2 +- ...odBoardFunction.circuit-schematic.snap.svg | 19 +++--------------- ...MicroModBoardProcessor.circuit-3d.snap.png | Bin 22309 -> 8985 bytes ...icroModBoardProcessor.circuit-pcb.snap.svg | 2 +- ...dBoardProcessor.circuit-schematic.snap.svg | 19 +++--------------- ...Microcontroller_RP2040.circuit-3d.snap.png | Bin 0 -> 14685 bytes ...icrocontroller_RP2040.circuit-pcb.snap.svg | 2 +- ...ntroller_RP2040.circuit-schematic.snap.svg | 4 ++-- .../imports/AP2112K_3_3TRG1.tsx | 3 +-- .../ProMicroBoard.circuit-3d.snap.png | Bin 19064 -> 12330 bytes .../ProMicroBoard.circuit-pcb.snap.svg | 2 +- .../ProMicroBoard.circuit-schematic.snap.svg | 19 +++--------------- .../RaspberryPiHatBoard.circuit-3d.snap.png | Bin 16690 -> 10095 bytes .../RaspberryPiHatBoard.circuit-pcb.snap.svg | 2 +- ...berryPiHatBoard.circuit-schematic.snap.svg | 19 +++--------------- .../ViaGridBoard.circuit-3d.snap.png | Bin 17366 -> 9242 bytes .../ViaGridBoard.circuit-pcb.snap.svg | 2 +- .../ViaGridBoard.circuit-schematic.snap.svg | 17 ++-------------- .../XiaoBoard.circuit-3d.snap.png | Bin 16227 -> 9294 bytes .../XiaoBoard.circuit-pcb.snap.svg | 2 +- .../XiaoBoard.circuit-schematic.snap.svg | 19 +++--------------- .../XiaoBoardRP2040.circuit-3d.snap.png | Bin 17331 -> 9357 bytes .../XiaoBoardRP2040.circuit-pcb.snap.svg | 2 +- ...XiaoBoardRP2040.circuit-schematic.snap.svg | 19 +++--------------- .../XiaoReceiver.circuit-3d.snap.png | Bin 1953 -> 1953 bytes .../XiaoReceiver.circuit-pcb.snap.svg | 2 +- .../XiaoReceiver.circuit-schematic.snap.svg | 19 +++--------------- package.json | 2 +- 38 files changed, 49 insertions(+), 178 deletions(-) create mode 100644 examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-3d.snap.png create mode 100644 lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-3d.snap.png diff --git a/bun.lock b/bun.lock index 065f0fd..46b991a 100644 --- a/bun.lock +++ b/bun.lock @@ -6,7 +6,7 @@ "name": "@tscircuit/common", "devDependencies": { "@biomejs/biome": "^2.2.4", - "@tscircuit/footprinter": "^0.0.379", + "@tscircuit/footprinter": "^0.0.380", "@types/react": "^19.1.12", "tscircuit": "^0.0.2067", "tsup": "^8.5.0", @@ -222,7 +222,7 @@ "@tscircuit/eval": ["@tscircuit/eval@0.0.1003", "", { "peerDependencies": { "@tscircuit/core": "*", "circuit-json": "*", "typescript": "^5.0.0", "zod": "3" } }, "sha512-WAJjlcSZ8q/eJ61yiwqXp52qBmZsXlHRXQSUnLQbaxVx+6ypZzP3hHpI+GMxtEYDL/m2eFw9sIgn7VbqK9iGwg=="], - "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.379", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-PKAlfTmRqLQt8OUrXji//Yola5vRdXr2ttF1b+yDXtBcdihIAhVh7qsNsxfQW9SMAeELlFdctJOET5/+q4cB0Q=="], + "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.380", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-gnb2T2fN4K9aiuuNY2XJBspNgxqTu63u4zj+RTCabY+3TpB7VFAwBuBjW3jKoLNIlHd0KGkNmroEdtxnVZlOCQ=="], "@tscircuit/image-utils": ["@tscircuit/image-utils@0.0.8", "", { "dependencies": { "@flatten-js/core": "^1.6.2", "color-diff": "^1.4.0", "fast-png": "^8.0.0", "svg-path-commander": "^2.1.11", "transformation-matrix": "^2.16.1" } }, "sha512-/a/dyd0Ly+YSk73pNXi0M02nfaiZ1NQ8PVNDBTOHHESyTOrNHiVAT+NWxsWi44gHZ/ivLegAmjxSSbSSGfU+sQ=="], @@ -728,6 +728,8 @@ "react-reconciler/scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], + "tscircuit/@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.379", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-PKAlfTmRqLQt8OUrXji//Yola5vRdXr2ttF1b+yDXtBcdihIAhVh7qsNsxfQW9SMAeELlFdctJOET5/+q4cB0Q=="], + "use-mouse-matrix-transform/transformation-matrix": ["transformation-matrix@3.1.0", "", {}, "sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA=="], "calculate-cell-boundaries/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-3d.snap.png b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-3d.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..63302e9f7c7a3b9752843b849c4d4123f63e4baf GIT binary patch literal 17628 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 SV%s5huU@vgRBr0==l=q3`g+L# literal 0 HcmV?d00001 diff --git a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg index 87c6751..13c39f4 100644 --- a/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg +++ b/examples/MicrocontrollerRP2040WithUsbC/__snapshots__/MicrocontrollerRP2040WithUsbC.circuit-pcb.snap.svg @@ -1 +1 @@ -D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-3d.snap.png b/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-3d.snap.png index 8a5d2cd0bc4738333fbbdc1c883c27f5232bde27..b13444fd084d95c8193a8bc725555f44076fa9d2 100644 GIT binary patch literal 9326 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 literal 16999 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 \ No newline at end of file +A0A1A2A3A4A5VINGND1GND0V5V3_3RESIOREFNCD7D6D5D4D3D2TXRXD8D9D10D11D12D13GND2AREFSDASCL \ No newline at end of file diff --git a/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-schematic.snap.svg b/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-schematic.snap.svg index f1de7f7..acdfac1 100644 --- a/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-schematic.snap.svg +++ b/lib/ArduinoShield/__snapshots__/ArduinoShield.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -ArduinoShield_chip1A02A13A24A35A46A57VIN9IOREF10RES11V3_312V513GND014GND115RX16TX17D218D319D420D521D622D723D824D925D1026D1127D1228D1329GND230AREF31SDA32SCL \ No newline at end of file diff --git a/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-3d.snap.png b/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-3d.snap.png index 524378d9d43bf3aadb3747d800c27e60e123f5a2..9113b2e0882dc4c2529d3e0157dfb982d088c32b 100644 GIT binary patch literal 5856 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 diff --git a/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-pcb.snap.svg b/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-pcb.snap.svg index 5f46072..0b4c034 100644 --- a/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-pcb.snap.svg +++ b/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-schematic.snap.svg b/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-schematic.snap.svg index 81adffa..4114b35 100644 --- a/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-schematic.snap.svg +++ b/lib/CM5Receiver/__snapshots__/CM5Receiver.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -A_10164227_1001A1RLFundefined_LEFT1USB_OTG_ID2PCIe_CLK_nREQ3USB_N4PCIE_nWAKE5USB_P6PCIE_PWR_EN7GND_228GND_239PCIe_nRST10PCIe_CLK_P11VBUS_EN12PCIe_CLK_N13GND_2414GND_2515MIPI0_D0_N16PCIe_RX_P17MIPI0_D0_P18PCIe_RX_N19GND_2620GND_2721MIPI0_D1_N22PCIe_TX_P23MIPI0_D1_P24PCIe_TX_N25GND_2826GND_2927MIPI0_C_N28USB3_0_RX_N29MIPI0_C_P30USB3_0_RX_P31GND_3032GND_3133MIPI0_D2_N34USB3_0_DP35MIPI0_D2_P36USB3_0_DM37GND_3238GND_3339MIPI0_D3_N40USB3_0_TX_N41MIPI0_D3_P42USB3_0_TX_P43HDMI1_HOTPLUG44GND_3445HDMI1_SDA46HDMI1_TX2_P47HDMI1_SCL48HDMI1_TX2_N49HDMI1_CEC50GND_3551HDMI0_CEC52HDMI1_TX1_P53HDMI0_HOTPLUG54HDMI1_TX1_N55GND_3656GND_3757USB3_1_RX_N58HDMI1_TX0_P59USB3_1_RX_P60HDMI1_TX0_N61GND_3862GND_3963USB3_1_DP64HDMI1_CLK_P65USB3_1_DM66HDMI1_CLK_N67GND_4068GND_4169USB3_1_TX_N70HDMI0_TX2_P71USB3_1_TX_P72HDMI0_TX2_N73GND_4274GND_4375MIPI1_D0_N76HDMI0_TX1_P77MIPI1_D0_P78HDMI0_TX1_N79GND_4480GND_4581MIPI1_D1_N82HDMI0_TX0_P83MIPI1_D1_P84HDMI0_TX0_N85GND_4686GND_4787MIPI1_C_N88HDMI0_CLK_P89MIPI1_C_P90HDMI0_CLK_N91GND_4892GND_4993MIPI1_D2_N94MIPI1_D3_N95MIPI1_D2_P96MIPI1_D3_P97GND_5098GND_5199HDMI0_SDA100HDMI0_SCLA_10164227_1001A1RLFundefined_RIGHT1GND_12GND_23Ethernet_Pair3_P4Ethernet_Pair1_P5Ethernet_Pair3_N6Ethernet_Pair1_N7GND_38GND_49Ethernet_Pair2_N10Ethernet_Pair0_N11Ethernet_Pair2_P12Ethernet_Pair0_P13GND_514GND_615Ethernet_nLED316Fan_Tacho17Ethernet_nLED218Ethernet_SYNC_OUT19Fan_PWM20EEPROM_nWP21LED_nACT22GND_723GND_824GPIO2625GPIO2126GPIO1927GPIO2028GPIO1329GPIO1630GPIO631GPIO1232GND_933GND_1034GPIO535ID_SC36ID_SD37GPIO738GPIO1139GPIO840GPIO941GPIO2542GND_1143GND_1244GPIO1045GPIO2446GPIO2247GPIO2348GPIO2749GPIO1850GPIO1751GPIO1552GND_1353GND_1454GPIO455GPIO1456GPIO357SD_CLK58GPIO259GND_1560GND_1661SD_DAT362SD_CMD63SD_DAT064SD_DAT565GND_1766GND_1867SD_DAT168SD_DAT469SD_DAT270SD_DAT771GND_1972SD_DAT673SD_VDD_OVERRIDE74GND_2075SD_PWR_ON76VBAT77V5_IN_178GPIO_VREF79V5_IN_280SCL081V5_IN_382SDA083V5_IN_484CM5_V3_3_OUT_185V5_IN_586CM5_V3_3_OUT_287V5_IN_688CM5_V1_8_OUT_189WL_nDisable90CM5_V1_8_OUT_291BT_nDisable92PWR_Button93nRPIBOOT94CC195LED_nPWR96CC297CAM_GPIO098GND_2199PMIC_Enable100CAM_GPIO1 \ No newline at end of file diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-3d.snap.png b/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-3d.snap.png index 5b2082c5c8500d3a11f0d4decab40b058fdb52b8..752bb1a8985d3187bd67946304c5f28aadcc139d 100644 GIT binary patch literal 6176 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 diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-pcb.snap.svg b/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-pcb.snap.svg index 733337a..24e9fa5 100644 --- a/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-pcb.snap.svg +++ b/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-schematic.snap.svg b/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-schematic.snap.svg index 471eedc..7721434 100644 --- a/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-schematic.snap.svg +++ b/lib/MicroModBoard/__snapshots__/MicroModBoardFunction.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -MicroModBoardFunction_chip2V3_3_174V3_3_26RESET11BOOT4V3_3_EN72RTC_V39USB_VIN5USB_D_N3USB_D_P37USBHOST_D_N35USBHOST_D_P43CAN_TX41CAN_RX23SWDIO21SWDCK58AUD_MCLK56AUD_OUT54AUD_IN52AUD_LRCLK50AUD_BCLK14I2C_SCL12I2C_SDA16I2C_N_INT53I2C_SCL151I2C_SDA149BATT_VIN_31GND17GND233GND336GND439GND545GND675GND760SPI_SCK162SPI_SDO164SPI_SDI166SDIO_DATA168SDIO_DATA270SPI_N_CS157SPI_SCK59SPI_SDO61SPI_SDI55SPI_N_CS34A038A132PWM047PWM110D018D117TX119RX113RTS115CTS122TX220RX240G042G144G246G348G473G571G669G767G865G963G108G1176HOLE_PAD_177HOLE_PAD_2 \ No newline at end of file diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-3d.snap.png b/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-3d.snap.png index 0d0d16d708c287b0cd330f81dd19a3994e38d3dd..5ec2aaa8b604492426c523765b08acd9bdb8d078 100644 GIT binary patch literal 8985 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 literal 22309 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 diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-pcb.snap.svg b/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-pcb.snap.svg index 840bcd1..133d065 100644 --- a/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-pcb.snap.svg +++ b/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-schematic.snap.svg b/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-schematic.snap.svg index 86062f8..ca84644 100644 --- a/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-schematic.snap.svg +++ b/lib/MicroModBoard/__snapshots__/MicroModBoardProcessor.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -MicroModBoardProcessor_chip2V3_3_174V3_3_26RESET11BOOT4V3_3_EN72RTC_V39USB_VIN5USB_D_N3USB_D_P37USBHOST_D_N35USBHOST_D_P43CAN_TX41CAN_RX23SWDIO21SWDCK58AUD_MCLK56AUD_OUT54AUD_IN52AUD_LRCLK50AUD_BCLK14I2C_SCL12I2C_SDA16I2C_N_INT53I2C_SCL151I2C_SDA149BATT_VIN_31GND17GND233GND336GND439GND545GND675GND760SPI_SCK162SPI_SDO164SPI_SDI166SDIO_DATA168SDIO_DATA270SPI_N_CS157SPI_SCK59SPI_SDO61SPI_SDI55SPI_N_CS34A038A132PWM047PWM110D018D117TX119RX113RTS115CTS122TX220RX240G042G144G246G348G473G571G669G767G865G963G108G1176HOLE_PAD_1 \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-3d.snap.png b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-3d.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..b05983cb1f1ce378a17a6b68931cb9b0e41af647 GIT binary patch literal 14685 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 literal 0 HcmV?d00001 diff --git a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg index f7858ce..715b7db 100644 --- a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg +++ b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-pcb.snap.svg @@ -1 +1 @@ -D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file +D_VBUSR_3V3_ENC_IOVDD5C_IOVDD6C_IOVDD3C_IOVDD4R_RUNC_FLASHC_IOVDD1C_IOVDD2C_USB_VDDC_ADCJ_USBU1U2U3Y1SW_BOOTSW_RUND1D_PWRR_BOOTR_LEDR_PWR_LEDR_CC1R_CC2R_USB1R_USB2C_VBUSC_3V3C_COREC_USBC_XINC_XOUTL_AVDDTP_SWCLKTP_GNDTP_SWDIOTP_3V3BOOTRUNPWRUSB-C+- \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg index 530c2c3..e8ea4ad 100644 --- a/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg +++ b/lib/Microcontroller_RP2040/__snapshots__/Microcontroller_RP2040.circuit-schematic.snap.svg @@ -8,7 +8,7 @@ .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - + D_VBUSR_3V3_EN100kΩC_IOVDD5100nFC_IOVDD6100nFC_IOVDD3100nFC_IOVDD4100nFR_RUN10kΩC_FLASH100nFC_IOVDD1100nFC_IOVDD2100nFC_USB_VDD100nFC_ADC100nFTYPE_C_16PIN_2MD_073_J_USB13EH114EH215pin13_alt116pin14_alt117A1B1218A4B919B820A521B722A623A724B625A826B527B4A928B1A12RP2040U11IOVDD62GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD511GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD423DVDD224SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD334GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD243ADC_AVDD44VREG_IN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD150DVDD151QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS57GND/thermalpadW25Q16JVUXIQU21CS234GND56CLK78VCC9EPAP2112K_3_3TRG1U31VIN2GND3EN4NC5VOUTX322512MSB4SIY11OSC12GND13OSC24GND2SKRPACE010SW_BOOT1234SKRPACE010SW_RUN1234D1D_PWRR_BOOT10kΩR_LED330ΩR_PWR_LED330ΩR_CC15.1kΩR_CC25.1kΩR_USB127ΩR_USB227ΩC_VBUS10uFC_3V310uFC_CORE1uFC_USB1uFC_XIN18pFC_XOUT18pFL_AVDD600MHTP_SWCLKTP_GNDTP_SWDIOTP_3V3VSYSVSYSVBUSVBUSVBUSVBUSPLED_D + " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.48300687882200005px"/>PLED_D \ No newline at end of file diff --git a/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx index d971cd8..c3afe0f 100644 --- a/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx +++ b/lib/Microcontroller_RP2040/imports/AP2112K_3_3TRG1.tsx @@ -16,8 +16,7 @@ export const AP2112K_3_3TRG1 = (props: ChipProps) => { jlcpcb: ["C23380830"], }} manufacturerPartNumber="AP2112K_3_3TRG1" - footprint="dfn6_missing(5)_p0.95mm_w3.2001mm" - pcbRotation={180} + footprint="dfn6_missing(5)_p0.95mm_w3.2001mm_pin1location(rightside,bottom)" cadModel={{ objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C23380830.obj?uuid=8c971aea3af54c53b74baeb1f489d393", diff --git a/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-3d.snap.png b/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-3d.snap.png index dea045af67ca18e5d4f7da42929aa5cc9ee5b62c..d3acfa5959c2de4c88f4bb94887557f5c355f305 100644 GIT binary patch literal 12330 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 Cd)DRv diff --git a/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-pcb.snap.svg b/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-pcb.snap.svg index 99d9e56..836550a 100644 --- a/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-pcb.snap.svg +++ b/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-schematic.snap.svg b/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-schematic.snap.svg index e16a3df..a95f563 100644 --- a/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-schematic.snap.svg +++ b/lib/ProMicroBoard/__snapshots__/ProMicroBoard.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -ProMicroBoard1RAW2GND13RST4VCC5A36A27A18A09SCK10MISO11MOSI12D1013TXO14RX115GND216GND317D218D319D420D521D622D723D824D9 \ No newline at end of file diff --git a/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-3d.snap.png b/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-3d.snap.png index dc141eb8e5c6578e15159a572cc96765c8bbe8f1..e60c89a990f9f5ad3c7d1a12add28a54b234b166 100644 GIT binary patch literal 10095 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 literal 16690 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 z1B-n&wSF|sundefined_chip \ No newline at end of file +RaspberryPiHatBoard_chip \ No newline at end of file diff --git a/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-schematic.snap.svg b/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-schematic.snap.svg index d663259..0e0d169 100644 --- a/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-schematic.snap.svg +++ b/lib/RaspberryPiHatBoard/__snapshots__/RaspberryPiHatBoard.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -RaspberryPiHatBoard_chip1V3_3_12V5_13V5_24GND_15GPIO_14/TX6GPIO_15/RX7GPIO_18/PCM_CLK8GND_210GPIO_2411GND_312GPIO_2513GPIO_8/CE014GPIO_7/CE115GPIO_1/ID_SC16GND_417GPIO_12/PWM018GND_519GPIO_1620GPIO_20/PCM_DIN21GPIO_21/PCM_DOUT22GND_623GPIO_2624GPIO_19/PCM_FS25GPIO_13/PWM126GPIO_627GPIO_528GPIO_0/ID_SD29GND_730GPIO_11/SCLK31GPIO_9/MISO32GPIO_10/MOSI33V3_3_234GPIO_2235GPIO_2736GPIO_1737GND_838GPIO_4/GPCLK039GPIO_3/SCL40GPIO_2/SDA \ No newline at end of file diff --git a/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-3d.snap.png b/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-3d.snap.png index d272b0a2d893f90ecfa0223b2be0b5ee17b21667..fb9526e3dfa15172f8c6e39b40a427d91d5ae4b8 100644 GIT binary patch literal 9242 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 literal 17366 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 TOP \ No newline at end of file +VIAGRID TOP \ No newline at end of file diff --git a/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-schematic.snap.svg b/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-schematic.snap.svg index 2c402ff..42e5ff8 100644 --- a/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-schematic.snap.svg +++ b/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/XiaoBoard/__snapshots__/XiaoBoard.circuit-schematic.snap.svg b/lib/XiaoBoard/__snapshots__/XiaoBoard.circuit-schematic.snap.svg index e1f5072..3ec452e 100644 --- a/lib/XiaoBoard/__snapshots__/XiaoBoard.circuit-schematic.snap.svg +++ b/lib/XiaoBoard/__snapshots__/XiaoBoard.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -XiaoBoard1A02A13A24A35SDA6SCL7TX8VBUS9GND110V3_311MOSI12MISO13SCK14RX \ No newline at end of file diff --git a/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-3d.snap.png b/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-3d.snap.png index 2ccb00ac9f1a17a0d02ef1b1d8371cf904a27011..5912191454c03bf7df8f5f49ec68d54f7a4cfb96 100644 GIT binary patch literal 9357 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 literal 17331 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 \ No newline at end of file + \ No newline at end of file diff --git a/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-schematic.snap.svg b/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-schematic.snap.svg index 0148dfe..058c951 100644 --- a/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-schematic.snap.svg +++ b/lib/XiaoBoard/__snapshots__/XiaoBoardRP2040.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -XiaoBoardRP20401SWDIO2SWCLK3RUN4GND15GND26VIN7A08A19A210A311SDA12SCL13TX14VBUS15GND316V3_317MOSI18MISO19SCK20RX \ No newline at end of file diff --git a/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-3d.snap.png b/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-3d.snap.png index 8ff6cf3d44482686b150b9dd24ea4f49c06a9eb1..32b7e650b919795be8180ce7101d4fa944096282 100644 GIT binary patch delta 73 zcmZ3;zmR`|vM76or;B4qMckVMjSN80u;A}X@s%3`ud(s%khM?&2?>1pzg7Cp#K3$p YAI1P~21adPu^%9DPgg&ebxsLQ0GJjRrvLx| delta 72 zcmZ3;zmR`|vN8jcr;B4q1>+m3x=RcU>`@@z+k=LT3=9m16n-y{W2;Zt=y;ZGVnBu1 Za)tnI21Z8vC&55T22WQ%mvv4FO#mw_74!fA diff --git a/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-pcb.snap.svg b/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-pcb.snap.svg index 0096a15..ae2f61a 100644 --- a/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-pcb.snap.svg +++ b/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-pcb.snap.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-schematic.snap.svg b/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-schematic.snap.svg index e1f5072..9471b8b 100644 --- a/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-schematic.snap.svg +++ b/lib/XiaoBoard/__snapshots__/XiaoReceiver.circuit-schematic.snap.svg @@ -1,25 +1,12 @@ -1A02A13A24A35SDA6SCL7TX8VBUS9GND110V3_311MOSI12MISO13SCK14RX \ No newline at end of file diff --git a/package.json b/package.json index d2fef07..7eeab57 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "@biomejs/biome": "^2.2.4", - "@tscircuit/footprinter": "^0.0.379", + "@tscircuit/footprinter": "^0.0.380", "@types/react": "^19.1.12", "tscircuit": "^0.0.2067", "tsup": "^8.5.0" From 9331efac00738e5df5983fa2015f4d4c4ff79179 Mon Sep 17 00:00:00 2001 From: seveibar Date: Mon, 20 Jul 2026 15:45:37 -0700 Subject: [PATCH 7/7] Refresh Linux ViaGrid snapshot --- .../__snapshots__/ViaGridBoard.circuit-pcb.snap.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-pcb.snap.svg b/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-pcb.snap.svg index 9739647..442074c 100644 --- a/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-pcb.snap.svg +++ b/lib/ViaGridBoard/__snapshots__/ViaGridBoard.circuit-pcb.snap.svg @@ -1 +1 @@ -VIAGRID TOP \ No newline at end of file +VIAGRID TOP \ No newline at end of file