CAD Data File Format

All the data the LitePlacer need will come in through the pick and place file, produced by your CAD system. Currently, LitePlacer reads Altium, KiCad* and DipTrace files directly, and the output from almost all Eagle UPLs for pick and place file generation. For other programs, the file needs to meet the definition below.

*Note to KiCad users: The current version of KiCad allows you to put spaces to component value. The KiCad generated .pos file is space separated, and the field width can change. These don’t fit together, and this will change in a future version of KiCad. So, spaces in values are not accepted without quotes around them (this is how I’m told the KiCad will behave in the future).

LitePlacer Input File Format Specification

The file is a regular CSV (Comma Separated Values) text file. On each line, there is a set of values, separated by commas or semicolons. Values can be quoted but don’t need to be. The first line is a header line, telling which values are in which columns. The order of the columns is not important.

There should be at least these columns:

  • Part Designator: This is the name of the component, such as R16. Acceptable header strings are “Designator”, “designator”, “Part”, “part”, “Component”, “component”, “RefDes” or “Ref”.
  • Component Value: This is the value of a component, such as 10k. Acceptable header strings are “Value”, “value”, “Val”, “val”, “Comment” or “comment”.
  • Component footprint: This describes the physical form of a component, such as 0603. Parts with same footprint and same value are grouped together. Acceptable header strings are “Footprint”, “footprint”,”Package”, “package”, “Pattern” or “pattern”.
  •  X coordinate of the Component Center: Acceptable header strings are “X”, “x”, “X (mm)”, “x (mm)”, “Mid X”, “mid X”  or “PosX”. Values must be in mm’s. The “mm” in the value (such as in the example below) is optional.
  • Y coordinate of the Component Center: Acceptable header strings are “Y”, “y”, “Y (mm)”, “y (mm)”, “Mid Y”, “mid Y or “PosY”. Values must be in mm’s. The “mm” in the value (such as in the example below) is optional.
  • Rotation Value of the Component: A rotation value of 0 indicates, that a component from a tape of +Y orientation and 0 rotation on the tape will be placed without rotating. Positive values are counter-clockwise. Acceptable header strings are “Rotation”, “rotation”, “Rot”, “rot” or “Rotate”.
  • (optional) Layer indicator: If layer indicator is not present, the assumption is a board with components on top side only, but the program does support double side part placement designs as well. Acceptable header strings are “Layer”, “layer”, “Side”, “side”, “TB” or “tb”. Accepted values for top side are “Top”, “top”, “T”, “t” or “F.Cu”, and for bottom side “Bottom”, “bottom”, “B”, “b”, “Bot”, “bot” or “B.Cu”.

In all value descriptions above, the quotes are optional. Empty lines and comment lines starting with # or // are ignored. However, Kicad headers are parsed.

Here is an example snippet from a start of a pick and place file generated by Altium and accepted without processing. Altium has extra data present (“Ref” and “Mid” fields), and other systems might have some as well; the LitePlacer software needs only the values described above, ay extra data is ignored.

"Designator","Footprint","Mid X","Mid Y","Ref X","Ref Y","Pad X","Pad Y","Layer","Rotation","Comment"
""
"R20","0402","12mm","12.5mm","12mm","12.5mm","11.55mm","12.5mm","T","180.00","1k"
"R19","0402","10.75mm","10.75mm","10.75mm","10.75mm","10.4318mm","11.0682mm","T","135.00","1k"
"R18","0402","8.25mm","9.75mm","8.25mm","9.75mm","8.25mm","10.2mm","T","90.00","1k"
"R17","0402","5.75mm","10.5mm","5.75mm","10.5mm","6.0682mm","10.8182mm","T","45.00","1k"
"R16","0402","4.5mm","12.25mm","4.5mm","12.25mm","4.95mm","12.25mm","T","360.00","1k"