How to prevent "virtual" components from appearing in BOM


On KiCAD 5, what is the process for hiding virtual components - i.e. things like screw-holes, PCB-trace antennas, or programming headers that aren’t populated - from appearing in the BOM?

I’ve set them as “Virtual” in PCBNew, but they still appear in the BOM when I generate one through the menu in PCBNew (File > Fabrication Outputs > BOM File…)


I think the feature virtual is used for the components positioning output.

In fact, there is a mismatch between the footprint properties (through-hole, smd, virtual) and the Generate Position files (insert attribute).

Anybody knows if someone has raised a bug about this mismatch?

Built in BOM tools are quite limited. There are external plugins that can do what you are asking for.
Some are listed here at the end:

I’m thought that in V4, “Virtual” meant it didn’t appear in the BOM when generated from PCBNew? I’d rather generate the BOM from the schematic, but it works pretty well either way.

From this post:

apparently you can add # before the reference name for symbols not to appear in the BOM.

EDIT: From the KiCAD documentation “By convention, every symbol in which the reference field starts with a # will not appear in the symbol list or in the netlist and the reference is declared as invisible.” Meaning that the footprints associated with the symbols won’t appear in the PCB (holes, test point, etc.)

1 Like

I now have a strange case, for some reason the test points didn’t go into the BOM, but I don’t know why or how.

This component gets into the BOM:

L MultiplexerBox-rescue:MountingHole-Mechanical H1
U 1 1 5C4EDA23
P 13150 1200
F 0 "H1" H 13250 1246 50  0000 L CNN
F 1 "MountingHole" H 13250 1155 50  0000 L CNN
F 2 "Mounting_Holes:MountingHole_4.3mm_M4" H 13150 1200 50  0001 C CNN
F 3 "~" H 13150 1200 50  0001 C CNN
	1    13150 1200
	1    0    0    -1  

this one however, does not get into the BOM:

L Connector:TestPoint TP1
U 1 1 5C709879
P 13200 3350
F 0 "TP1" H 13200 3675 50  0000 C CNN
F 1 "TestPoint" H 13200 3584 50  0000 C CNN
F 2 "Fiducial:Fiducial_0.75mm_Dia_1.5mm_Outer" H 13400 3350 50  0001 C CNN
F 3 "~" H 13400 3350 50  0001 C CNN
	1    13200 3350
	1    0    0    -1  

I would like to know how to achieve this, without being worried of some parts being lost.

EDIT: I’m using the default “” BOM generator and my KiCAD version is:

Application: kicad
Version: (5.0.2)-1, release build
wxWidgets 3.0.4
libcurl/7.61.1 OpenSSL/1.1.1 (WinSSL) zlib/1.2.11 brotli/1.0.6 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) nghttp2/1.34.0
Platform: Windows 7 (build 7601, Service Pack 1), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8)
Boost: 1.68.0
OpenCASCADE Community Edition: 6.9.1
Curl: 7.61.1
Compiler: GCC 8.2.0 with C++ ABI 1013

Build settings:

1 Like

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