Show un-populated components in schematic

In V5.99 I have the ability to set a setting of each symbol/component to exclude it from the BOM. This is pretty common, I don’t believe I’ve ever l created a pcb without a single un-populated component.

However, I’d like to show clearly in the schematic that this component is not populated and that it’s only there because it “might be good to have in the future”. Eeschema doesn’t seem to show this in the schematic in any way? Am I correct?

If I’m correct, how are you guys solving this? Are you adding something to the schematic manually? Or do you just don’t care about the schematic showing components as if there were present on the board even though they are not?

I believe that a fairly common solution is to change the value of the symbol/component to something like DNP. I don’t really like this at all since then I can’t read which component the symbol represents. If it’s a resistor I still want to show which value of the resistor that I believe may have to be populated in the future. Sometimes it can be a whole block of components, and then it’s really not preferable to set the shown value of every IC, transistor, resistor and so on to DNP.

In the symbol properties you can add a visible attribute.

You could use “DNP” or “Note 1”

I prefer Note 1 because you can then add words suggesting what this place holder was intended for.

That’s a good point! That’s how I’m currently doing in another schematics application which doesn’t have the native support for tagging a component as DNP. But if I’m doing it this way the “Exclude from BOM” checkbox will have no purpose for me since the BOM will be uploaded to a system which can just as well use the added DNP information to exclude it when the BOM is imported. I really don’t like to have redundant information (both checkbox and custom field) since there’s no in built check that these are always the same.

1 Like

Any program cannot be all things to all people. I can think of reasons to use one and not the other. However Kicad does allow you to get this done.

You’re absolutely right! That’s why was asking for new input on how people does this, for me to adapt to the program instead of just disliking that it’s not “done my way”. :slight_smile: I will probably go by your solution and not use the built in checkbox feature. However, it would’ve been amazing if ticking that box did something like greying out the symbol in the schematic to clearly show that the component is not really there.

By the way, I just tested generating a BOM just now, and the ability to write your own python script for how to format the BOM is really a neat feature!

That would be cool. As for asking, I agree 100%. Today’s software is so feature rich I always assume the program will do whatever I want. Then I go see if it will really do it :slight_smile:

A note: You can have default user fields added to all your components: In eeschema -> Tools -Preferences -> Schematic Editor -> Field Name Templates.

Here you add any field you want, all symbols in all your schematics will have them. Also, set this field to be visible by default. This way, using DNP field is less hard to use: you just double click on component in any schematic and fill in something inside DNP field, no additional clicks needed, except autoplace field (hotkey “O”) command for component just edited. As a personal preference, I have three custom fields: Comment_assy: comments seen by assembler, exported to the BOM, Comment_sch: Comment to be seen in schematic, printed, alternative part numbers, and DNP field: used to exclude from BOM, also, used to exclude from iBOM.

There is some discussion here about a possible future ‘variant’ system to better handle DNP as well as other configuration options. This has been pushed back into a future version and has been tagged for 7.
For the time being, using an external parser like KiBom is going to be your best option.


To all in this thread who hasn’t already read this: I was mistaken about the “Exclude from bill of materials” checkbox. It is not intended to be used for a “Do Not Place” info. Its purpose is to exclude virtual components from the XML netlist, because these components (edge card connectors, some microwave components like an antenna, logos, holes…) are just drawings on the board, and do not need a “physical” component.

I got this answer in a discussion in an issue reported regarding the Python BOM export scripts.

That’s an excellent tip, thank you!

Thanks for the link! Very interesting discussion indeed. I’m already looking forward to V7! :slight_smile:

1 Like

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