pcb-rnd knowledge pool


io_kicad: KiCad file format support limitations

io_kicad by Tibor 'Igor2' Palinkas on 2019-04-12

Tags: insight, kicad, io_kicad, alien, file, format

node source



Abstract: Detailed description of pcb-rnd's KiCad file format support, focusing on features which are not yet or not fully supported.


1. Reading s-expression (KiCad version 3+) files

Round corner zones/polygons

Karl Hammar observes: It also seems that kicad polygons have rounded corners which depends on min_thickness. Look at the difference between these files:

kicad_pcb gerber
39a.kicad_pcb 39a.gbr
39b.kicad_pcb 39b.gbr

Resolution: the polygon lib in pcb-rnd does not have support for calculating where edges/hairpins of a polygon needs to be triggered, thus pcb-rnd is importing these polygons with sharp corners. There is no plan to support this at the moment.

Polygon-dependent clearances

In KiCad the clearance value is set by the sorrunding polygon (zone), not by the object that is clearing: 39a.kicad_pcb , 39a.gbr .

A test case pack (CUCP#39) contributed by Karl Hammar is available for later development/testing.

Resolution: At the moment pcb-rnd does not have support for polygon specified clearance. This extension is planned in the next issue of the data model, where the both the clearing object and the polygon can set the clearance and the larger value is used. Until that is implemented, clearance values are not imported properly.

Polygon clipping details

Since we generally store the "as drawn" polygon and calculate the "clipped" polygon using all object clearances and other factors, there are, and always will be differences between how polygons behave or look like:

Resolution: Always check your polygons after import!

Polygon keep-away from the outline

In KiCad there seems to be a margin/clearance applied from the outline to copper polygons.

Resolution: pcb-rnd does not have anything like that, so the polygons you import may extend to or even beyond the manual drawn board outline. We have long term plans to provide a (completly different) solution to the generic problem KiCad's cross-layer clearance is trying to solve.

Text mirror

KiCad mirrors text horizontally (when fp_text or gr_text effect's justidy has the mirror keyword in the s-expression file). Unfortunately pcb-rnd can mirror text vertically only, so this mirroring is skipped for now.

Resolution: Text position is calculated properly, but mirroring is not done.

Custom shaped pads vs. convex hull clearance

From KiCad 5 it is possible to request a convex hull shaped clearance for non-convex polygon pads (custom pads), see the examples drawn for CUCP#46 : 46.kicad_pcb , 46.gbr

Resolution: Not supported, the convex hull clearance is ignored with a warning. Later on pcb-rnd may have support for custom (user defined polygon) clearance shape for padstacks; that's when this can be revised. Until that, polygon clearances in pcb-rnd will be calculated as if the convex hull clearance was not selected in KiCad.