Managing Your PCB Bill of Materials

The Bill of Materials section allows you to manage the list of components to be placed on your PCB during assembly, while also detailing costs and any potential issues in one place.

This view will not be populated until you’ve uploaded your bill of materials, either by uploading an XYRS file, or by uploading a supported EDA source file. For more information on file formats and what files we support, see Required Design Files.

Formatting Bill of Materials and XYRS Data

The Bill of Material and XYRS data file is used to place parts on the PCB. The file describes which parts are placed and where their locations are. The file should have the extension “.XYRS”. The file is tab delimited and should contain the following fields. All dimensions shall be in mils for X-Y locations and degrees for rotation.

Lines beginning with ‘#’ will be ignored

Column Description Example
Designator Part Name U1, R10, C8
X-Loc X-Location of Part (mils, oriented from bottom-left) 1200.00
Y-Loc Y-Location of Part (mils, oriented from bottom-left) 900.00
Rotation Rotation of Part (degrees) 270
Side Layer the Part is On 1/T/top for Top, 2/B/bot/bottom for Bottom
Type Surface or Through Hole 1/SMT/SMD for SMD, 2 for PTH
X-Size X Dimension of the Part (mils) Size of the Package, Measured By the Pad Footprint
Y-Size Y Dimension of the Part (mils) Size of the Package, Measured By the Pad Footprint
Value Value of Part 10K, 0.1uF, ATMEGA328P-AU
Footprint Footprint of Part C0805, R0603, TQFP-100
Populate (optional) Whether or not to populate this part 1 for populate, 0 for do not populate
MPN (optional) The MPN for this part MF-CAP-0402-27pF

For example:

Part X Y Rotation Side Type XSize YSize Value Footprint Populate MPN
R1 1200.00 900.00 180 1 1 40.0 20.0 1K 0402-RES 1 MF-CAP-0402-27pF

An example .XYRS file can be found here.

You can now link your BOM Excel file to your .XYRS file by using the Bill of Materials import tool below!

Importing Existing Bill of Materials

You can also import an existing bill of materials in Microsoft Excel 2007 format.


After uploading, the system will attempt to automatically map your bill of materials to the corresponding MacroFab format required for assembly.




If the system cannot automatically map your bill of materials, you will be presented with an interface to map the raw imported data to the corresponding MacroFab format required for assembly. Rows that do not contain pertinent data can be excluded from import by clicking them. You can map your data to the MacroFab format by selecting the appropriate column from the drop-down selector. The only required column is Designator, although it is recommended that you map as many columns as possible, as this will assist in automatic part matching.




Once you have accepted the automatic bill of materials and/or mapped your raw data, you will be presented with a final view of the bill of materials that will be imported. Rows can be excluded from import by clicking the trash icon. Any rows that do not contain corresponding placement data will be marked with a warning. These parts will not be assembled on the PCB until placement data is uploaded.




The Bill of Materials Summary

At the top of the Bill of Materials view is a summary, showing you the number of components populated on the board, not populated, a total and per unit parts cost along with total and per unit labor charges.

Clicking on the count of components populated, not populated, or no parts selected will automatically filter your bill materials to component groups which match that description.

The part and labor costs will automatically update as you change the quantity to manufacture or alter the components you’re using in your bill of materials.


Component Groups

All of the components in your bill of materials are grouped into Component Groups based on the Footprint and Value of the component supplied in your bill of materials. Each component group will look similar to this:


The Package, Value, and MPN fields are editable – simply click on their contents to go into edit mode.

If a part has been selected to use for this group of components (either by searching for a market part or specifying a consignment part), the manufacturer part number for that part will be displayed in the Selected Part field. Clicking on the part number will bring up details about that part for market parts.


Below the selected part field is the list of components included in this group. Clicking on the list will bring up the ability to move components to other groups, create a new group, or indicate whether individual components should be populated.


On the right side of the component group are the following items:

  • Cost summary: This displays the total parts and labor costs for the component group for the current quantity being built. These costs automatically update as you adjust the quantity to manufacture at the top of the screen. Mousing over any price will display a pop-up with the individual component price, which can be handy if you have multiple units of a part, or are building multiple copies of a board.
  • Populate/Do Not Populate/Information Icon: These buttons control whether or not the component group will be populated on the PCB. Component groups that are not populated will not be placed on the PCB and do not incur any charges. Clicking the information icon will expand the component group to allow more granular control over which components are populated on the PCB.
  • Market/Consign/Inventory: These buttons control where the component group’s selected part is sourced from. When market is selected, MacroFab will purchase the selected part on the market. When consignment is selected, you will ship MacroFab the selected part after placing an order. When inventory is selected, the part will be sourced at MacroFab from the inventory you own.

Consignment requires an MPN to be specified. You cannot select to consign a part unless there is already a selected market part, or you have provided an MPN.  If the consignment option, or inventory option are not available, make sure that you specify an MPN for this part.

  • House Part Detail Icon/Supply Detail Icon/Source Detail Icon: These icons provide a visual reference for house part details, supply availability details, and source details.
  • Search for Parts: This link opens the part search interface for market parts.


Clicking on a part number in the search results will display details about the part:


Clicking on Price/Risk Matrix will yield a matrix of the search results that compares pricing and availability in order to provide assistance in choosing the most cost-effective, low-risk part.


Clicking on Compare Part Attributes will yield a table of the search results separated by the most common attributes. These attributes can be sorted to provide assistance in choosing the part that most closely reflects your needs.


Suggested Parts

In many cases, we can automatically identify candidates for your component groups by matching their type and/or part number. For House Parts, we can often infer viable candidates from the footprint and value of, for example, resistors and capacitors. For market parts, we suggest parts whose manufacturer part number exactly match the MPN or Value field specified.

If a House Part is matched for the component group, it will automatically be selected, otherwise any Market Part that is matched will be selected. You can always change the selection by searching for a new part, or by using the Suggested Parts link.

Moving Components Between Groups, Creating New Groups

To move a component from one group to another, for example when changing the value of a resistor to that of another set of resistors, simply click on the component list. The display will include a drop-down for assignment. Select the new component group to assign this component to.

If you want to create a new group for the component (i.e. give it a value and footprint combination not shared by other components), use the Assignment drop-down to select “Create a new Component Group.” Once you select this option, a new component group will be displayed, and the Package and Value fields will be started in edit mode. Simply input the new values and save them.