How to generate BOM and Pick & Place File in Proteus 8.9

In this tutorial, let’s see how to generate BOM (Bill of Materials) and CPL (Component Placement List) [Also known as a Centroid file, Pick and Place File, XY File, etc.] for JLCSMT service in Proteus.

This tutorial was written for Proteus 8.9 and the "Chameleon Mega Avr" sample project shipped with Proteus is used.

Generating the BOM

First, click the Bill of Materials icon (the Dollar sign icon) on the toolbar and the Bill of Materials tab will show up.

Figure 2. Proteus BOM Icon

At the moment, you can see the Menu has been changed accordingly for BOM generation, as shown below.

Figure 3. Proteus BOM Tab

Proteus supports BOM Template and allows importing predefined BOM templates. The BOM template for JLCPCB SMT can be found here. Just download the file JLCPCB.bomt and save it.

Execute Template → Import Template to import the template.

Figure 4. Import Template

Browse and find the file JLCPCB.bomt.

Figure 5. Browse and Find the JLCPCB BOM Template

After JLCPCB.bomt has been imported, you may notice the following changes.

  1. LCSC Part # Field has been added (this field is used for precise matching).

  2. Footprint Field has been added.

Select "Individual (R1, R2…)" as the references style.


In the Property Editor, you can fill in the LCSC Part # for components. For example, C1 is 1uF with 0603 size, if you search in SMT Part Library with the keyword of "1uf 0603 50v" you can find a capacitor with LCSC Part # of C15849 just fit. Copy this CXXX code and paste it in the LCSC Part # field, then click the Apply Changes button.

This operation will forward this LCSC Part # property back into the schematic.

Figure 7. Edit the BOM

If you click on C1 in the BOM, it will switch to C1 in the schematic automatically, double-click C1, you can see the LCSC Part # has been added:

Figure 8. LCSC Part # Added

Continue adding LCSC Part # for other components if you want precise matching [This LCSC Part # is optional, when you place the order, the parts in the BOM will be scanned and matched, but LCSC Part # tells JLCPCB exactly which part to use. If LCSC Part # exists, all other information will be ignored.]

After you finish this, it’s time to generate the BOM.

Menu operation: Generate → CSV

Figure 9. Generate CSV file

Now save this CSV file. If a spreadsheet program is installed, the CSV will be opened automatically.

Figure 10. BOM in a Spreadsheet Program

Now this BOM is JLCPCB-SMT-Ready.

Edit BOM Manually

If you want to modify this BOM, this auto-imported CSV file cannot be used because the leading 0s for package names have been removed without asking us!

Open the spreadsheet program and press Ctrl+O to open the BOM file. You’ll see the following dialog and set the options accordingly:

  1. Use "Comma" as a separator.

  2. Scroll to Footprint column and use Text as the Column type to keep leading 0s.

Figure 11. Import BOM into a Spreadsheet Program

After editing, save the CSV file and use CSV as the file format.

Generating the Pick and Place File

First, switch to PCB Layout Tab and click the Toggle Metric/Imperial icon to change the unit to metric. JLCPCB’s system only recognizes Pick and Place file in metric (unit: mm).

Figure 12. Switch to Metric

Execute Output → Generate Pick and Place File

Figure 13. Generate Pick and Place File Menu Operation

Now a window appears and you need to do a little bit of configuration:

  1. Change PKP file extension to csv.

  2. Un-check "Include Stock Codes?" option as it’s not needed.

  3. Check the "Exclude Thru-hole?" option as we only want SMD parts.

  4. Select the side (Top or Bottom) as JLCPCB currently can only solder one side.

Click Save button to save the file.

Figure 14. Set Output Options and Save the File
The reason we change the default file extension from PKP to csv it’s because this PKP file is a plain text file, and Operating Systems generally associate csv file with spreadsheet programs. You can also use the default PKP extension and change it manually later.

Figure 15. The Generated CSV File

If you open the file with a text editor, you can see the content, which is some sort of a CSV file.


Component positions for chameleon_avr_rev_a_sample.pdsprj

Fields: Part ID, Value, Package, Stock Code, Layer, Rotation, X, Y
Units:  Rotation - degrees, X, Y  - mm
Notes:  The X, Y value is the centre of package as drawn in ARES.
        The origin for these values is the Output Origin.
        The values are a guide only and must be checked manually when
        setting up automatic insertion equipment.

"U1","TI TLV1117-50","SOT223-4","",TOP,90,-33.6508,-8.3162
"U2","TI TLV1117-33","SOT223-4","",TOP,90,-33.627,-0.5698
"U3","PROPELLER QFP44","QFP44","",TOP,180,-3.6253,0.4434
"U6","FTDI FT232R","SSOP28","",TOP,90,-22.6986,11.0656

But at this stage, this raw Pick and Place file still cannot be uploaded to JLCPCB website directly, we need to clean it up.

Three cleaning methods can be used:

  1. Edit it in a text editor manually.

  2. Edit it in a Spreadsheet program manually.

  3. Process it with a computer program.

Edit in a Text Editor

The Pick and Place file is nothing else but a plain text file so we can edit it with a text editor.

Open the file with your favorite text editor.

  • Change "X" to "Mid X"

  • Change "Y" to "Mid Y"

  • Save the file.

That's it!

Figure 16. Pick and Place File Opened in Notepad
Figure 17. Change X/Y to Mid X/Y

Edit in a Spreadsheet Program

Sometimes it’s more intuitive to edit a tabular file in a spreadsheet program.

Launch the Spreadsheet program (LibreOffice Calc, Microsoft Excel, Google Doc etc.)

Click the Open icon to locate and open the CSV file (Menu operation: File → Open… or just use the standard short-cut key Ctrl+O)

Double click the CSV file will also invoke the spreadsheet program if CSV is associated correctly.
Figure 18. Click the Open Icon
Figure 19. Select the CSV File

Here we need a little bit setting again:

  1. Use Comma as the separator.

  2. Scroll to Package column, and select Text as the Column type otherwise the leading 0s for package names 0603, 0805… will be removed.

Then click OK.

Figure 20. Import CSV - Options

Now do the following changes:

  1. Change X to Mid X

  2. Change Y to Mid Y

  3. Do the other changes you want.

Now, click the Save button to save the work (Or just press Ctrl+S)

Figure 21. Change XY and Save the Work

Confirm to use CSV as the file format.

Figure 22. Confirm to use CSV Format

Now we have the CPL file which can be used to place the SMT order.

The Rotation Problem

After uploading Gerbers, BOM and Pick and Place files, if everything goes well, you’ll see a preview window that has a rendered PCB with components on it.

Figure 23. Wrong Rotation

You can see the orientations for lots of parts are incorrect. You can change the rotation in the Pick and Place File and upload it again.

In Proteus PCB Layout Help, it writes:

<code>The rotations are in anti-clockwise values in degrees relative to the orientation of the package when it was defined. Since there is no standard for default orientations of packages these values may be of limited use unless they can be combined with a translation table that is specific to ARES packages including ones you have defined yourself. This is a matter between yourself and whoever is providing the auto-insertion facility.				
If you use a script or a spreadsheet program to process the Pick and Place file, a translation table can be set up and maintained to fix the rotation automatically.

Fix the rotations and go back to the BOM/CPL uploading page, upload the CPL file again, now you can see some rotations has been fixed!

Figure 24. Rotation Fixed


Get a Blank Board in Preview Window

If you see a blank board without any components on it, one possible reason is the unit is not metric.

Solution: Toggle to metric before generating the Pick and Place file.

Figure 25. Blank Board

It’s easy to forget to switch to metric before generating the Pick and Place file, and here’s a trick:

You can set the Start-up units to Metric, then save the project, in this way you don’t need to switch the unit every time when you generate the file.

Figure 26. Menu Item Set Grid Snaps
Figure 27. Set Start-up Units to Metric

Designators are Messed Up

When you see designators are out of order, for example X1 and X2 are crystals, but now they are in the same line with a 0603 resistor…

The reason is JLCPCB only can recognize the interval notation style of R1-10 instead of R1-R10 (Proteus uses this style) for designators.

Solution: check if "Shortened" is selected as the reference style when generating the BOM. Use "Individual" style instead.

Still need help? Contact Us Contact Us