How do you work with PICK&PLACE Position file

How do you work with PICK&PLACE files?
My Assembly house wants to get full part specification within the Pick&Place file.
This means some manual work for me:

  • export the Flat (i.e. non-gropuped) BOM from EESCHEMA, which holds my Database IDs,
  • lookup the Database IDs in my main Parts DB, to assign full part description,
  • export Pick&Place which holds Reference designators only,
  • cross-reference it with “Flat” (i.e. Non-grouped) BOM file prepared above.

Unfortunately, this involves a lot of manual Copy/Pasting in some spreadsheets, using lot of VLOOKUP functions. It works, but it’s far from elegant. Maybe I’m missing something here. Could you share any hints on your workflow?

I am not clear what they are looking for here. The board houses I have dealt with (US, MX, Europe, Asia) generally need two things for the Pick & Place assembly:

  1. A BOM that has the RefDes, MFG, and MPN
  2. A position file that contains the RefDes, X location, Y location and rotation

These come straight from my Kicad-created fab package. Are they asking for the part MFG and MPN in the P&P position file?

Probably they want to have all the assembly information in one place (here: Pick&Place) - things like MPN and other parts details. So no easy way to get it straight from Kicad.

What stops you from creating a script that combines this files or generates this files from your kicad project? KiCad has a good Python library.

If you intend to use the same Assembly house in the future for other PCBAs, i recommend against doing it manually.

you may have a look at

still it is quite long time ago

1 Like

My first thought: Choose a different assembly house.
Separate BOM and P&P files is the standard, I think.
If they have other needs than they should find/develop the right tool to get what they want then ask all their customers that everyone would individually solve this problem for them.

I don’t intend to change them, as they’re OK in all business-important areas.
As I don’t have much of an experience except my own, I just wanted to seek other’s opinion. I thought I am maybe missing something, and it seem it’s only talking to my EMS missing.
If separate BOM + P&P is the standard, I will just ask for it.

I’m not 100% sure. I’m just thinking it is.
I have never heard that BOM + P&P can’t be enough, but I used only 2 (local - means in Poland) assemble houses.
They both translate my documentation to their own. I know that because if I wanted to replace one element with different one they didn’t wanted to get the whole updated documentation as it would start at their side the whole process from the beginning. They required list of changes.

The more streamlined houses only require BOM and CPL files and the refdes is the identfier field. But some houses have developed their idiosyncratic workflow. One I investigated wanted an Excel spreadsheet with 4 sheets: 1. PCB specification, 2. BOM, 3. Parts mapping, 4. CPL. I pointed out that 1 was just a repeat of the specs entered into the online order form, and why did they need 3, an image of the board with the courtyards and refdes, when PnP machines were doing the work (maybe for some manual THT parts). Also their sample CPL had 360° rotations, not sure why not 0. They replied basically we’ve always done it this way.

What your house requires can be done by doing in database terminology a join between the BOM and CPL. Duplication of fields, but there you are. So you could script it.

Thank you for your input. Indeed, what I need now is to make these links on my own. Initially I expected some hints on how to do it in an automated way, but the discussion rather points to the fact the approach used is generally “less than optimal”.
OTOH it’s a bit related to the way KICAD works, and the fact that during the transition between Schematic and Board some of the details are lost. Technically it could be possible to maintain all the relevant data over the whole workflow; so if I (read: my EMS) needs part description in the Pick&Place definition, so be it (and I just indicate what type of data I want to have there). Now it’s impossible since PCB does not carry my DatabaseID which just ends their lives in Schematic and Schematic’s BOM.
The side effect of this missing data propagation is that the BOM generated from PCB Editor is crippled (and IMO it should produce exactly the same data as BOM generated in Schematic editor).

I suspect that in future there will be greater integration between the schematic and layout editors. Already they are just different aspects of one application and the old netlist export/import transfer is deprecated. So it should become easier to generate the production outputs.

If your assembly house is JLCPCB, then just install the KiCad JLCPCB tools by bouni. One click perfect BOM files. And if there are part rotation problems in the JLCPCB viewer in the shopping cart, you just change them in the JLCPCB Tool and reexport.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.