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 final BOM is generated through a dedicated and powerful report generation engine, the interface to which is known as the Report Manager.
BOM Creation Choices
The final Bill of Materials output is generated by the Report Manager. The Report Manager can generate output in a variety of formats, including PDF, CSV, TXT, Excel, HTML or XML.
The Report Manager can extract the source information for the BOM from:
- The project - information is extracted from the schematics, as well as connected databases and the PCB, if required
- An ActiveBOM document (BomDoc) - which is the recommended approach.
If the project does not include an ActiveBOM, the Report Manager generates the BOM from the project. Using this approach, the Report Manager is used to perform all of the BOM layout configuration, such as selecting and arranging the columns, filtering out unneeded rows, including supplier information, and so on. The Report Manager is also used to configure the output settings, such as the format, the required Excel template, and so on. With this approach the BOM is prepared once the design process is complete. The Report Manager can only be used to configure one BOM output, if this approach is used an OutputJob must be used if you need to set up different BOM output configurations.
The recommended approach is to include an ActiveBOM document (BomDoc) in the project. The BomDoc is a source document that can be added at any stage during the development of the design - in essence a live parts list. Parts appear in the BomDoc automatically as the components are added to the schematic, and the designer can immediately begin exploring pricing and supply chain options, and assign preferred parts. The designer can also select and arrange the columns, apply filters, add line numbers, add additional custom columns, add additional rows for custom items - in short perform all of the typical BOM preparation steps, during the design process. Multiple output configurations can be prepared in the BomDoc, each saved as a BOM Set, with the required BOM Set being selected in the Report Manager for final BOM generation.
When the project includes a BomDoc, it is used as the source for the Report Manager.
Creating a BOM
The Report Manager can be opened from:
- The project source schematic documents or from the active PCB document using the schematic or PCB editor's Reports » Bill of Materials command.
- A Report-type output job configured in an OutputJob.
- An ActiveBOM, using the Reports » Bill of Materials command.
In each case, the source document(s) will be compiled and the Report Manager dialog will open.
A Bill of Materials, sourced from the project BomDoc, ready to be generated from the Report Manager.
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.
Grouping Components in the BOM
Component Grouping - When the BomDoc is the Source
A common approach used in a BOM is to have a row for each unique component. To achieve this, like-components must be grouped.
In a BomDoc, the column grouping is configured in the Component Grouping dialog. The designer can then switch column grouping on and off using the View Mode buttons , instantly switching between Flat View (one part per row) or Base View (parts grouped according to the settings in the ActiveBOM Component Grouping dialog).
If the Report Manager is using a BomDoc as the source, then the dialog includes the same View Mode buttons, use these to switch between one part per row, or grouped. The Consolidated View is used where their are variants, this is discussed later in the Catering for Variants section.
These differences in the Report Manager dialog can be seen by comparing the two following images (hover the cursor over the image to change images).
When the BOM is sourced from a BomDoc there is no Grouped Columns section, as grouping is performed in ActiveBOM.
Typically there is no need to perform any layout changes to the data in the Report Manager dialog if a BomDoc is the source, but it is possible if required, using the grouping techniques described below.
Component Grouping - When the Project is the Source
When the project is used as the source for the Report Manager, grouping of like-components is configured in the Report Manager.
The Columns tab of the dialog includes the Drag a column to group section, as shown below. Like-components will be grouped in the BOM when the contents of all grouped columns match. For example, in the image below, components C1 and C3 have been grouped into the same row of the BOM (the first row), so must have the same values for their
To group by additional parameters, click, hold and drag on a column name from the Columns list (down the bottom-right of the dialog), then drop it in the Drag a column to group section. Click the delete icon ( ) adjacent to each column name to remove that parameter from being a grouping parameter.
Enable a column's Show option to have that data included in the BOM.
Configuring the Layout of the BOM Items
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.
Changing Column Order
The order of the columns in the data region of the dialog can be changed by clicking and dragging a column heading to a new location, as required. While moving a column header, valid drop locations are indicated by two vertical white arrows.
Adjusting the Column Widths
If not all data is displayed in a particular column, either drag the applicable column separator to widen the column, or use the right-click Best Fit command. This command widens the column according to the longest field entry (or header string length) in that column. To resize all columns to fit their longest field entry (or header string length), use the Best Fit all Columns command.
Sorting Data within Columns
Data in any given column can be sorted in ascending or descending order by clicking on the column header (away from the filter icon). Note that all columns will be affected but the rows will be sorted according to the column that was clicked. Multi-column sorting is also supported, hold the Shift key as you click on subsequent column headers to sub-sort by that second column.
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 filter icon ( ), located to the right of each column header. Notice that the subsequent menu lists all individual row entries for quick selective filtering, or select the (Custom…) entry to access the Filter Editor dialog. Use the dialog to build up the filter, which can be based on values in any column. Refer to the the Filter Editor dialog page for more information.
Once a filter has been applied, the filter icon turns blue ( ) to indicate custom filtering is in force for that column. The filter currently applied is reflected at the bottom-left of the data region, and can be re-edited by clicking the pencil icon, as shown below.
An example of using custom filtering.
To clear the current filter being applied to the data set, click on the small cross (Clear Filter) to the right of the filter expression at the bottom of the data region.
Where the Layout is Stored
The layout defined in the Report Manager is stored, so that it can be re-applied the next time the dialog is opened. The location of where the layout is stored changes, depending on where the Report Manager is sourcing the BOM information from, and where the Report Manager is opened from.
- If the source for the Report Manager is an ActiveBOM BomDoc: the current layout defined in the BomDoc is transferred to the Report Manager each time it is opened. Layout changes made in the Report Manager are not retained, use the BOM Sets feature in ActiveBOM to configure specific report layouts.
- If the source for the Report Manager is the project (or the PCB):
- And the Report Manager is opened from the schematic or PCB editor's Reports menu, the Report Manager layout is stored in the project file.
- And the Report Manager is opened from an OutputJob, the Report Manager layout is stored in the OutJob file. This is done so that the OutJob can be transferred from one project to another project.
Including Additional Information Directly to the BOM
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 is only used for the BOM.
Beyond the information derived from the schematic components, the Report Manager can also extract information from connected data sources, including:
a Managed Component Server (for managed components)
the Altium Cloud Services (for components placed from the Manufacturer Part Search panel)
a database, for components linked to that database
the schematic document parameters
Enable the required Sources in the Columns tab of the Report Manager, then enable the required parameter(s) in the Columns list.
Including Database Information
If components are linked to an external database, the Report Manager is able to extract record information directly from that database. Click the button in the Sources region of the Columns tab to enable databases as a source. This option will only be available if one or more components in the design are linked to an external database.
Database parameters can be included from an external database, regardless of the method employed to link to that database: *.DbLib, *.SVNDbLib, or *.DbLink. Look for the icon in the Columns list to distinguish a parameter that exists for one or more placed components in the linked external database, to include in the BOM.
Including PCB Information
Source information for a Bill of Materials can include property information taken from the PCB, in the event the designer needs to customize and use the report generation for special-purpose BOM. An example would be for generation of a pick and place file, where the placement machine operator wants PCB data (such as X, Y location), along with other component specific parameters, configured in a specific column order and file format.
Click the button in the Sources region of the Columns tab to enable the PCB as a source. This option will only be available if there is a PCB document in the project file. If the project includes multiple PCB documents, the Choose PCB to Use dialog will appear.
Choose which PCB to use as a source for the BOM.
To switch to another PCB document, click the button in the Sources region to disable that PCB as a source, then click it again to re-open the Choose PCB to Use dialog and select a different PCB.
Including Supplier Data in the BOM
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. If the design components have been placed from a Managed Content Server (and have Part Choices defined), or from the Manufacturer Part Search panel, those components will include links to the supply chain. If they have links to the supply chain then linked supplier data – including pricing and stock information – can be included at design release time in the Bill of Materials, by enabling the appropriate parameter Columns.
The following supplier-based data can be included in a Bill of Materials by enabling the checkbox of each desired item in the Columns region:
- Manufacturer n - name of the manufacturer.
- Manufacturer Lifecycle n - manufacturer lifecycle status, if available.
- Manufacturer Part Number n - manufacturer part number.
- Supplier n - name of the Supplier.
- Supplier Currency n – alphabetic code for the chosen currency used for pricing data.
- Supplier Order Qty n – number of units required to fulfill the desired production quantity of the product.
- Supplier Part Number n – part number for the Supplier Item.
- Supplier Stock n – how many units of the item the Supplier has in stock.
- Supplier Subtotal per Board n – the Quantity multiplied by the Supplier Unit Price, resulting in the subtotal for that item.
- Supplier Subtotal n – the Supplier Order Quantity multiplied by the Supplier Unit Price, resulting in the subtotal for that item.
- Supplier Unit Price n – cost per unit of the Supplier Item.
Specifying the Production Quantity
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 Supply Chain region of the Report Manager to specify the required value.
The value entered into the Production Quantity field is used to determine the Supplier Order Qty – 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 Qty 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.
Changing Supplier Currency
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 in the Supply Chain region of the Report Manager. The chosen currency will affect the following data columns, which can also be included in the BOM:
- Supplier Unit Price n
- Supplier Currency n
- Supplier Subtotal per Board n
- Supplier Subtotal n
Choose from a list of supported currencies when outputting pricing data in a Bill of Materials.
Using Cached Pricing Data in BOM Parameters when Offline
When working online (connected to the internet and signed in to an Altium Live 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 the Report Manager, click the Cached button in the Supply Chain Data region of the dialog.
Catering for Variants
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 variant drop-down available at the top of the Report Manager dialog. The Report Manager banner will indicate the currently selected variant.
Base the BOM report on a specific variant, the dialog banner shows which variant is currently being used.
The data region of the dialog will update accordingly:
- Components defined as Not Fitted for the chosen variant are removed, unless the Show Not Fitted option is enabled.
- Parameter values are updated with those from the chosen variant where they vary from the base design.
To keep components that are Not Fitted in the BOM and explicitly mark them as such, enable the Show Not Fitted option and also enable the Fitted column in the Columns tab of the dialog. For each component, an entry in this column reflects whether each component is Fitted or Not Fitted for the chosen variant. The value entered into the Quantity column for a component that is Not Fitted on the chosen variant, is zero (0).
Variant Support when the Source is a BomDoc
If the Report Manager is using a BomDoc as the source, it is possible to generate a single BOM for all variants. This is referred to as a Consolidated BOM, to display this, set the View Mode to Consolidated View.
Two additional variant-specific additional columns are automatically displayed, for each variant:
Exporting the BOM
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.
To export the Bill of Materials, perform the following steps:
- Use the File Format drop-down menu to choose the format in which to export the BOM data. The following formats are supported:
- CSV (Comma Delimited) (*.csv)
- Tab Delimited Text (*.txt)
- MS-Excel (*.xls, *.xlsx) (uses Microsoft Excel)
- Generic XLS (*.xls, *.xlsx) (uses a built-in XLS-format file generator, so that this format can be generated without having Microsoft Excel installed)
- Portable Document Format (*.pdf)
- Web Page (*.htm, *.html)
- XML Spreadsheet (*.xml)
- If the export format is Excel, an Excel template can be applied to the exported data.
- To open the exported file in the associated software application, enable the Open Exported option.
- To add the generated report to the project after it is created, enable the Add to Project option.
- Enable the Report BOM Violations in Messages option to run a check for the ActiveBOM during BOM generation. Detected violations will be detailed in the Messages panel.
- Click the Export button then use the dialog that appears to specify where and under what name the BOM report is to be saved. Click Save to create the export.
Mapping Design Data into the BOM
A common approach to BOM generation is to export the BOM data from Altium NEXUS, into a company-preferred Excel format spreadsheet. Altium NEXUS data is mapped into the spreadsheet by including special Field and Column statements in the Excel template. The Field statement is used to map a single parameter, for example, a document parameter called
Title. The Column statement is used to map per-component parameters, for example, the
Designator component parameter.
The Field statement is used to map a document or project parameter, for example, the
Title, into the BOM. The Field declaration is replaced by the passed value, as shown in the images below.
Fields are used in the format:
An example is Field=Currency
Fields should be defined above or below the Column region of the template.
Column declarations are used to map per-component parameters, for example, each component's
Description, user-defined parameters, and so on. This can also include: line numbers, PCB location data, and custom column data entered into the BomDoc if there is a BomDoc in the project. The Column declaration in the template is replaced by the ColumnName string, with each row below being populated by that column value for each BOM Item, as shown in the two images below.
Columns are used in the format:
An example is Column=Designator
- Each column defined in the template must be displayed in the Report Manager, for that column of data to be transferred.
- The data will present in the Excel spreadsheet in the same row order that it has in the Report Manager. Use the Report Manager's column sorting and sub-sorting feature to sort the rows as required.
Project-level information is typically mapped using the Field= statement, into the header of the BOM document.
||The currency that has been chosen in the Supplier Options region of the Report Manager dialog.
||The filename of the source used for the BOM data.
||The full path + filename of the source used for the BOM data.
||For a BOM, this field displays Bill of Materials.
||Name of the generator - BOM when output is generated by the Report Manager.
||Title of the BOM, as displayed in the Report Manager (excluding the text "For BOM Document [<DataSourceFileName>]").
||For a BOM, this field displays BOM_PartType.
||The filename of the PCB data source.
||Production quantity defined in the Report Manager dialog.
||Name of the PrjPcb file (including file extension).
||Full path + the project filename.
||Date on which the report was created.
||Date and time at which the report was created.
||Time at which the report was created.
||Sum of the values in the BOM Items Quantity column.
||Title displayed at the top of the BOM Reports dialog.
||Name of the variant, as defined in the Variant Management dialog.
||Current revision of the BomDoc.
||Current revision of the project (incremented when a Commit Whole Project is performed).
||Displays the value assigned to the user-defined UserProjectParameter-n.
Mapping Document and Project Parameters
As well as the Field statements listed above, schematic Document Parameters (both default and user-defined parameters entered in the schematic document's Properties panel) and Project Parameters (Options for PCB Project dialog) can also be used as Fields, or as Columns.
Mapping BOM Item Information
The core region of a BOM is the grid of BOM Items, typically using a row for each component. Each column in this grid represents a component property, such as the designator, value, and so on. Columns are defined by entering the component property/parameter (BOM column heading), in the format:
An example would be Column=Description, or Column=Designator
Column information can be taken from several sources, including:
These ColumnNames are available for all components
PCB component location information can also be included. In order to use these columns, the Include Parameters From PCB option must be enabled in the Report Manager dialog.
It is possible to retrieve online data from suppliers and include it in the BOM. Note that these are updated live, and are retrieved when the BOM is generated. Multiple suppliers can be set up for each component. In the table below, these have been described as Supplier Info x - replace x with the appropriate number.
||Manufacturer Part Number x
|Supplier Currency x
||Supplier Order Qty x
||Supplier Part Number x
|Supplier Stock x
||Supplier Subtotal x
||Supplier Unit Price x
User-defined columns are includes in the same way:
Generating the BOM from an Output Job
A Bill of Materials can also be configured and generated as part of an Output Job Configuration file (*.OutJob). Add an Output Job to the project via the New menu, or right-click on the project in the Projects panel.
To add a BOM output generator to an open 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, all source schematic documents (the [Project] entry), or an ActiveBOM document.
Once added, double-click the new entry to access the Report Manager and customize the BOM as outlined 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).
Enable the output for the selected Output Container then click Change to configure the output, ready to generate a BOM report from an Output Job file.
Publishing to PDF Based on an Excel Template
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:
- When configuring the BOM output generator:
- Set the File Format in the Export Options region to Microsoft Excel Worksheet (*.xls, *.xlsx, *.xlt, *.xltx).
- Specify the required Excel template using the Template field in the Excel Options region.
- Link the BOM output generator to the required (and configured) PDF Output Container, as shown in the image above. The following rules are applied to determine the size of the spreadsheet to print to PDF:
- Cells to the right of the right-most column header are not included in the output.
- Cells below the lowest text cell are not included unless they contain horizontal borders and/or background colors and are not separated from the main section of the BOM by more than ten blank rows.