circuit-json-to-kicad (tscircuit) errors

26 recurring problems engineers report in circuit-json-to-kicad (tscircuit), ranked by impact.

#10 by errors trackedECAD

Recurring circuit-json-to-kicad (tscircuit) errors, by impact

  1. 1Companion repro PR to #784: it runs KiCad outside the assertions so a crashed tool cannot count as a successful repro of the dropped 0.20 mm edge clearance.ECAD · Agent failure · 1 report74
  2. 2Each standalone via also produced an empty footprint with no reference, so a board with 16 thermal and stitching vias imported 16 unresolved NOREF BOM lines with footprint Unknown at CircuitHub. The vias themselves exported fine, so the board looked right and the BOM was wrong.ECAD · Agent failure · 1 report74
  3. 3Repro for lost solder paste apertures on KiCad export: of six explicit apertures (a reduced linked one, four component-owned stencil windows, a standalone circle), the export keeps one, expands it to the copper size, and drops the other five, which goes straight into the stencil.ECAD · Agent failure · 1 report74
  4. 4The KiCad project exporter dropped the board's authored min edge clearance. On a reduction of a real NEMA34 controller, 0.20 mm became KiCad's default 0.50 mm, and KiCad 10.0.5 reported 4 copper-edge findings on a track with about 0.445 mm clearance. The fix is three lines.ECAD · Agent failure · 1 report74
  5. 5Two red LEDs in tscircuit, one with its pin labels swapped. The export writes two definitions under one lib id and KiCad resolves both parts through one of them. kicad-cli's netlist on main puts R1 on D1 pin 2 when the source says pin 1. ERC shows the same 16 violations before and after, so the check says nothing about the flipped LED.ECAD · Agent failure · 1 report74
  6. 6When two components pointed at different 3D models sharing a basename (body.step), the KiCad export wrote both to the same file in .3dshapes so one overwrote the other and footprint model paths pointed at the wrong STEP.ECAD · Agent failure · 1 report74
  7. 7A 3 x 3 panel has 9 boards and 72 cutouts in circuit.json. The .kicad_pcb gets one board's outline, 4 Edge.Cuts lines. The Gerber export of the same circuit has everything. Two exports from one source, two different boards.ECAD · Agent failure · 1 report66
  8. 8A fabrication note rotated 37 degrees in Circuit JSON lands in KiCad at 0 degrees.ECAD · Agent failure · 1 report66
  9. 9A related repro in the same failure class as #745 but with a distinct probe-pad case: export to KiCad adds paste openings on probe pads marked noSolderPaste and mask openings on pads marked coveredWithSolderMask, while copper matches and the fab layers don't.ECAD · Agent failure · 1 report66
  10. 10A route-defined via can differ from its physical via by one floating-point ULP, so the export to KiCad wrote the same via twice, and a real NEMA23 controller came out with 315 via records for 314 vias.ECAD · Agent failure · 1 report66
  11. 11Authored per-net trace widths did not survive export to a KiCad project: on an RP2040 BLDC controller, 16 nets lost their 0.3 mm, 1 mm, and 2 mm widths once the project was edited in KiCad.ECAD · Agent failure · 1 report66
  12. 12Authored schematic line width and dashed style both become zero-width solid polylines in the KiCad export.ECAD · Agent failure · 1 report66
  13. 13Custom symbols exported to KiCad at 15 times their size, with every pin 0.01 mm long, so pin ends fell off KiCad's 1.27 mm grid and kicad-cli ERC reported endpoint_off_grid. Separately, two instances of identical custom artwork exported as two library definitions because local coordinates 0.07219 and 0.07218999999999998 rounded to different values. Both are being fixed.ECAD · Agent failure · 1 report66
  14. 14Exported .kicad_pcb files carried a KiCad 9 version stamp over KiCad 8 layer numbers, so EasyEDA Pro rejected them, and placed schematic symbols had an empty Footprint field while the PCB had the footprint.ECAD · Agent failure · 1 report66
  15. 15Mounting holes exported with no reference and no exclude_from_bom or exclude_from_pos_files, so two 2.2 mm mounting holes showed up at CircuitHub as an unresolved NOREF BOM line.ECAD · Agent failure · 1 report66
  16. 16No via got a tenting node, so KiCad applied the board default to every via. The kicadts library also only writes the legacy bare form, which KiCad 10 ignores on a via, and cannot parse the modern form, so a KiCad 9 or 10 board with per-via tenting will not round-trip.ECAD · Agent failure · 1 report66
  17. 17Repro for #813. A 3x3 panel exports Edge.Cuts for its first board only, 14x18 mm instead of the whole panel. A candidate fix in #816 gave 199 invalid_outline violations in native KiCad 9.0.2. The fixture now runs native KiCad DRC on the export.ECAD · Agent failure · 1 report66
  18. 18Round-tripping a KiCad footprint through Circuit JSON renames unconnected pads. Pad MP1 comes back as 5 and SH2 as 6, because unconnected pads have no linked source port. Mounting and shield pads quietly lose the names the footprint and assembly drawings depend on.ECAD · Agent failure · 1 report66
  19. 19The .kicad_pcb used the raw trace name while the .kicad_sch let KiCad auto-name the same net, so kicad-cli pcb drc with schematic parity reported netlist_conflict errors on every unnamed net. Two files from one generator, two names for one wire.ECAD · Agent failure · 1 report66
  20. 20The exporter ignored min_board_edge_clearance, so KiCad fell back to its 0.5 mm default and a valid GND track 0.4453 mm from the edge on a real NEMA34 controller failed a rule nobody asked for (the circuit's own rule was 0.2 mm).ECAD · Agent failure · 1 report66
  21. 21The first instance's drawing became the only library entry for that name. In a generated motor-control example, J2 and J4 are drawn mirrored from J1 and J3, but on main they got J1's geometry, so their pins land off the wires and the parts drop their nets. The fix gives each distinct drawing its own lib id and treats numbers within 1 nm as equal, since floating-point noise of about 1e-13 had split identical symbols.ECAD · Agent failure · 1 report66
  22. 22The KiCad exporter gave every SMD pad a solder mask opening and a paste layer: pads meant to stay covered by mask got opened, and bare copper probe pads and test points got paste; both would reach the fab as written.ECAD · Agent failure · 1 report66
  23. 23The same exporter wrote 0.15 mm clearance into every copper pour, flattening pours with their own clearance (0.30 mm on the GND inner layer, 0.16 mm on EFUSE_IN).ECAD · Agent failure · 1 report66
  24. 24The tscircuit KiCad exporter replaced explicit copper-pour clearances of 0.16 mm and 0.30 mm with 0.15 mm on a real NEMA34 driver board.ECAD · Agent failure · 1 report66
  25. 25tscircuit can emit net labels as text attached to a trace. The converter wrote them as graphic text, which KiCad does not connect. In the repro, kicad-cli's netlist shows all four pins unconnected and no SIGNAL net on main. Open since September and still needed on current main.ECAD · Agent failure · 1 report66
  26. 26Unnamed nets got one name in the generated .kicad_pcb and none in the .kicad_sch, so KiCad auto-named them differently and schematic-parity DRC reported net_conflict; the test suite still runs 96 pass / 117 fail even with the fix.ECAD · Agent failure · 1 report66

How it fails

  1. Agent failure26

Engineering tools that address these errors

Sourced from public community reports. Costs and delays on individual entries are modeled estimates, not measurements.