Altium Designer provides the ability to generate a comprehensive and customizable Bill of Materials. The Bill of Materials, or BOM, is a key ingredient of the data set generated from a board design project. This report-type document provides a listing of all components required to build the product, including the bare board, which is essentially the base 'component' upon which all other parts are assembled. The BOM acts as a guide for what needs to be procured to build the product as designed. It also provides a means to calculate cost based on the required number of assembled boards in a requested spin. The BOM is generated through a dedicated and powerful report generation engine, the interface to which is known as the Report Manager.
A Bill of Materials can be generated from the project source documents or from the active PCB document using the Reports » Bill of Materials command from the Schematic or PCB editor. In each case, the source document(s) will be compiled, followed by display of the Report Manager dialog.
The dialog presents the various properties/parameters for all components on the source document(s). Each property/parameter has its own column. The designer simply chooses which data to include in the generated BOM report. Data can be grouped, sorted and filtered as required, with the ability to include additional parametric data from a nominated PCB for the project and/or a linked database, as required.
The following sections take a closer look at manipulation of the data to arrive at the desired BOM content prior to exporting the report.
The left-hand side of the dialog contains two regions – Grouped Columns and All Columns. The latter provides a listing of all columns for use in the report, with each column reflective of a particular component property/parameter. Each column has an associated Show option. Enable this option to display that column in the data region on the right-hand side of the dialog. This region displays the data as it will be presented in the generated BOM report.
Each enabled column will list information for each of the components found in the source document(s), where such information exists. If the component does not have any information for that particular property/parameter, the field will be blank.
Components can be grouped together by one or more specific columns of information. For example, you may wish to group components by LibRef, Footprint, or Comment. To do this, simply click and drag the desired data column from the All Columns region to the Grouped Columns region. The latter will display an entry to reflect that data is being grouped by that specific property and the data region of the dialog will update accordingly.
To remove grouping by a particular property, simply drag that entry from the Grouped Columns region back into the All Columns region. To ungroup the BOM information, either clear the Grouped Columns region or group by Designator.
The order of the columns in the data region of the dialog can be changed from the All Columns region or from within the data region itself:
Data in any given column can be sorted in ascending or descending order by clicking on the column header (away from the far right drop-down arrow). Note that all columns will be affected but the rows will be sorted according to the column that was clicked. If not all data is displayed in a particular column, either drag the applicable column separator to widen the column, or use the Column Best Fit command available from the menus (shortcut Ctrl+F). This command widens each column according to the longest field entry. The Column Best Fit command works correctly only if there is enough overall width in the data region; manually drag the last column's separator as required to achieve this. The Column Best Fit command is unavailable if the Force Columns to View option is enabled.
In some cases, you may need to exclude specific parts from the BOM report, such as fiducials, or perhaps a unique set of components need to be listed with a particular designator root and/or footprint. To support this, the dialog provides the ability to apply custom filtering, giving you full control over the content of the BOM. To apply filtering, click the drop-down arrow in a column header. Notice that the subsequent menu lists all individual row entries for quick selective filtering. Click the (Custom…) entry to access the Custom AutoFilter dialog. Use the dialog to specify which rows of data to show in the BOM based on the filtering criteria defined for that column. Once applied, the drop-down arrow turns blue to indicate custom filtering is in force for that column. Apply custom filtering to other columns of data as required – the full filter currently applied is reflected at the bottom-left of the data region.
To clear the current filter being applied to the data set, click on the small cross to the left of the filter expression at the bottom-left of the data region. If filtering is applied to multiple columns, clear the filtering for a particular column only by choosing (All) from that column's drop-down menu.
Source information for a Bill of Materials has, in the past, been taken from the property information of the placed components for the design. That can lead to a lot of information attached to a schematic that only is used for the BOM. If components are linked to an external database, the Report Manager dialog is able to extract record information directly from that database. When configuring the BOM for the project, enable the Include Parameters from Database option. This option will only be available if one or more components in the design are linked to an external database.
Parameters can be included from an external database, regardless of the method employed to link to that database: *.DbLib, *.SVNDbLib, or *.DbLink. In the All Columns region, the icon is used to distinguish a parameter that exists for one or more placed components in the linked external database.
Source information for a Bill of Materials can be based on property information taken from the PCB in the event the designer needs to customize and use the report generation for more than a BOM. An example would be for generation of a pick and place file where every placement machine wants the data (such as X, Y location) in a different column order and in different file formats. When configuring the BOM for the project, enable the Include Parameters From PCB option. This option will only be available if there is a PCB document in the project file. If generating a BOM from the PCB document, this option will be enabled and unavailable since the parameters are automatically included due to the PCB being the source for the report. The banner of the Report Manager dialog will update to reflect the PCB document and in the All Columns region, a PCB parameter is distinguished through use of the icon.
If the project includes multiple PCB documents, the BOM Report Options dialog will appear.
To switch to another PCB document, use the Change PCB Document command available using the Report Manager's Menu button or with the right-click menu.
Being able to cost a project and determine the quantities of design components to be ordered from suppliers/distributors is an essential part of the overall design process. After live Supplier Links have been added to Altium Designer components as required, the linked supplier data – including pricing and stock information – can be included at design release time in a Bill Of Materials.
The following supplier-based data can be included in a Bill of Materials by enabling the checkbox of each desired item in the All Columns region:
You can fully cost a project based on the number of units of the product that it is intended to produce. i.e., the Production Quantity. Use the Production Quantity field in the Supplier Options region of the Report Manager dialog to specify the required value.
The value entered into the Production Quantity field is used to determine the Supplier Order Quantity – the quantity of the component that would need to be ordered to produce the given product quantity. This is calculated by multiplying the Quantity (of each particular component) by the specified Production Quantity.
In turn, the Supplier Order Quantity is used to determine the Supplier Unit Price that applies. Remember that suppliers typically offer various quantity pricing levels, depending on how many units of an item are purchased. To have Altium Designer round up the Supplier Order Quantity and take advantage of the next (reduced) pricing level, simply enable the Round up Supplier Order Qty option to reach the price break option.
The currency used for pricing-related data in a Bill of Materials can be specified from the range of supported currencies. Choose the required currency from the drop-down field available to the left of the Production Quantity field, in the Supplier Options region of the Report Manager dialog. The chosen currency will affect the following data columns:
When working online (connected to the internet and signed in to an Altium account) pricing-based data for components with Live Links to Supplier Data will be updated. When generating a BOM, the latest pricing at that point in time will be used. For specific currencies, the exchange rates are updated on a daily basis.
When working offline, you can use the last cached pricing data in the pricing-based parameters in the BOM. To do this, from within the Report Manager dialog, enable the Use cached pricing data in parameters if offline option in the Supplier Options region of the dialog.
If there are variants defined for the design, you can generate a Bill of Materials based on a chosen variant. To do this, select the required variant from the Change Variant sub-menu, accessible from the Report Manager dialog Menu button or right-click menu.
All currently defined variants for the design are listed in the menu. When a specific variant is chosen for use, it is identified by showing next to it. In addition, the Report Manager dialog banner will reflect use of that variant.
The data region of the dialog will update accordingly:
To keep components that are Not Fitted in the BOM yet explicitly mark them as such, enable the Include Not Fitted Components option at the bottom of the dialog. A new column named Fitted is created.
For each component, an entry in this column reflects whether the chosen variant is Fitted or Not Fitted. By default, this column is shown (as the left-most column) sorted and grouped. This causes all Not Fitted components to be grouped together at the end of the BOM – after all Fitted components.
The value entered into the Quantity column for a component that is Not Fitted on the chosen variant, is zero (0).
Once the content for the BOM is defined and organized as required, the report can be generated – either printed, or exported into one of several file formats. Controls for exporting the BOM data are located in the Export Options region of the Report Manager dialog.
To export the Bill of Materials, perform the following steps:
When exporting the BOM report into Microsoft Excel Worksheet format, you have the ability to control the appearance of the report using a nominated Excel template. Controls for choosing the template are provided in the Excel Options region of the Report Manager dialog.
Enter the required template filename (*.xlt, *.xltx) directly into the Template field, or click the … button to browse for it. Alternatively, click the drop-down arrow to access a listing of predefined, default templates that are included as part of the Altium Designer installation.
Parameters are a universal feature of Altium Designer and can be added to the project, a document, a component – virtually almost any object. Project and document parameters can be extracted from the design and included in the Bill of Materials.
Document parameters are included with each component that comes from that document and project parameters can be mapped to pre-defined fields in an Excel template using the string
Other useful strings that can be used in an Excel template include:
Field=PCBDataSourceFileName– display the filename of the PCB data source.
Field=VariantName– display the name of the currently chosen variant on which the BOM report is based.
Field=ProductionQuantity– display the value entered for the Production Quantity field in the Supplier Options region of the Report Manager dialog.
Field=Currency– display the currency chosen in the Supplier Options region of the Report Manager dialog.
Field=DataSourceFileName– display the filename of the data source.
Field=ProjectFileName– display the project filename.
Field=ReportDate– display the date on which the report was created.
Field=ReportTime– display the time at which the report was created.
A Bill of Materials can also be configured and generated as part of an Output Job Configuration file (*.OutJob). To add a BOM output generator to the Output Job file, click Add New Report Output under the Report Outputs category and choose Bill of Materials from the pop-up menu. A second menu is provided from which you can specify the data source (which source document(s) is to be used when the BOM report is generated). Only applicable data sources are available, leaving less room for error.
The data source for a BOM can be a single, specific source schematic document, the PCB design document, or all source schematic documents. The latter is represented by the [Project] entry. Once added, double-click the new entry to access the Report Manager dialog and customize the BOM as outlined previously in this document. Once the output generator is configured, link it to the relevant Output Containers. A BOM report can be generated as file-based output or published as a PDF. It can also be printed by sending directly to a printing device as Hard Copy (through a configured Print Job).
From an Output Job file, the BOM report can also be published to PDF format based on a nominated Excel template by performing the following: