Generic symbols and footprints for fully specified parts

Dear people,

I’m new to KiCad, having used Eagle for 6 years before this. I’m very confused as to the way devices are made. I do not use ‘generic’ components like most people seem to do. In the past years all parts and libraries I maintained where fully specified. i.e. they had an manufacturer, an orderable part number and additional information about the exact component in question. This way it is avoided that designers are making on-the-spot decisions on footprints and component selection when converting the schematic to layout, and when processing the BOM. After an component had been added to the library, it could only be used one way, always resulted in the same exact ordered part number and was guaranteed to have an IPC footprint generated for it based on the manufacturer datasheet. Or at least that’s how we did it for the past few years.

With Eagle this is easy. A device (component) is made using a footprint and a symbol. The device holds the pin mapping and all parameter fields. I used to have hundreds of fully-specified devices for even the most simple parts like resistors and capacitors, but only a few symbols because symbols for most passives where shared with many devices. Footprints where designed for each manufacturer specific series of components, and then shared between devices that only deviated in value within this series. So for example the CL05xxxxxx5yyyy by Samsung for general 0402 capacitors, or the RC0603FR-xxx series by Yageo for general 0603 type resistors.

In KiCad this seems more difficult. I’m still trying to figure this out, but the symbol is used to store much more then just the graphics and pin names. The footprint, parameters and pin mapping is also in there apparently. So (I think) when I add custom library-defined fields and a fixed footprint to a symbol, the symbol itself becomes non-generic as well, despite how simple that symbol may be.

As far as I see, this poses two problems:
-I’m going to get a great number of duplicate symbols that will be very difficult to maintain. If I’d ever want to change the text sizes, layers, positions etc. I would need to do this separately for all these fully-specified parts. At some point this becomes impossible.
-It seems like the “value” field is also used to actually name the component. So instead of text of my own choosing, it now shows as ‘100n’. This is problematic because I might have a dozen different capacitors with this value but differing in manufacturer, footprint, automotive qualification, packaging type you name it. If I needed to add all this to the value field just to make sure that I can find and differentiate between parts the schematic becomes unreadable. Just having the value field as a name is not enough. Can I change the name that shows up in search, but keep the displayed value on the schematic as-is? The actual defining parameter is the manufacturer product number, but showing that in full instead of just ‘1K’ is worse then unhelpful.

tldr:
Is there any way to use one footprint and one symbol to create multiple devices/components with varying custom parameters and values but still be library defined? Can the name of components be determined by something else than just the value field?

Since I’ve been looking into the program for only a week, it is possible I overlooked basic things.
Any help is greatly appreciated.

1 Like

Me too.
I have never even seen how the process of assigning footprints in KiCad looks like (I have only read about it in pdfs).
I started to use KiCad (in 2017) form making my own libraries with footprints and elements.
I even don’t change at schematic the resistor value. If I need a new value I add alias to resistor symbol in library. I am still working with V 5.1.12. In V6 there are no aliases, but I have checked that when opening my libraries it converts them to something that can be used the same way.

I am not going to be the one to give you a full answer, but if I understand correctly:

In KiCad, the symbol contains all component identifying information. But you are looking for a component specification which calls up a symbol separately so that you do not need to have a symbol for each component specification? (Or maybe the other way around; starting with the symbol and then listing many specifications for different components using that same symbol? Then if you want to tweak the symbol that will in turn affect all of those components listed?

I had not thought of that…I do not like to use our system of aliases. But does that address your need?

Yes. My need is to place at schematic the element I’m sure I have accepted to be used. So I want in library to see only such elements. When I add alias to library I see it as another element to be selected when adding it to schematic.
Years ago (when we assembled our PCBs ourselves) I had in library only elements we had in stock. That helped to not make a stock to be too big. Our semi-automatic placement machine had a wheel with small drawers. There were 52 of them I think, and changing contents of drawers before assembling another PCBs could be a source of mistakes so the best was to use the same values in all products. Adding any new value was a serious decision. When we started to use contract manufacturer that became to not be my problem but habit to limit the use assortment left.

Happy to hear my methods are shared to some extent. I am unfamiliar with aliases. I’ll do my reading. Do you perhaps have any lead on resources on this? It seems the recent V6 release has rendered quite a large numbers of tutorials deprecated. I’ll just start with the official manual I guess.
Thanks a lot for sharing your insights.

V6 has no aliases. I don’t know how it is named there.
In V5 you have a graphic + footprint specified and you could add as many aliases to it as you wanted.
So each alias had to have the same graphic and footprint.
V6 converts my aliases to… (I don’t remember the name). There you have the original with graphic and many its childs with the same graphic but new value and footprint.
So in V5 I had to have separate symbol for 0805, 0603, 0402 resistors and each symbol had the graphic (the same). In V6 you can have resistor graphic only once. When I will move to V6 I will may be do some changes in my libraries as it looks more logical to minimize the number of the same graphics in library.

I am unfamiliar with aliases

Be careful with reading about alias-symbols. This is outdated (kicad v5) and replaced with the term “derived symbols” (albeit both versions are somewhat similar)

I have changed my some decisions about my footprints few times. My first decision just based on something I have checked. Then when it happened to have elements at bottom I found that something not works correct an I had to change something in all my footprints.
All KiCad files are text files so most such changes you can do automatically (I use for it Notepad++).
Also KiCad has a good possibility to edit (in bulk) text properties at PCB. I never needed it so just don’t know details.

Using fully defines elements in V5 to have two elements with the same name they had to be in different libraries. In Protel I used to have all information in name so I had 1k as 0603 resistor and 1k_4 as 0402 resistor. But as KiCad didn’t allow me to use Univers-condensed font I decided to use as short values as possible so I had library R for 0603 resistors with 1k there and library R1 (for 1mm = 0402 resistors) with 1k there.

Yes, on the one hand (in ideal situation) I would like to have multiple instances/devices/components of one generic symbol, paired with a series-specific footprint, to create a large numbers of specific(exact) lines on the schematic/board/bom.

But this problem can be mitigated. Right now I just started copying the same symbol many times and just changing the parameters for each one. While difficult to maintain, it would be possible. If at one point we would decide to modify our generic symbols for passives and discrete semiconductors, it might be possible to use a text-based tool to search-and-replace our entire library tree?

Now the second issue I described seems the more pressing matter. After trying some more things I realized that KiCad doesn’t even allow having components with the same value in one library. This is going to be a huge problem when incorporating different series of resistors and capacitors. I do not understand why this limitation is in place.

Perhaps I can make my own value field that is used for viewing, and the actual value field (that would then be hidden) can contain the value+MPN. Or I might be forced to create a separate library entry for each manufacturer product series. Perhaps having many libraries isn’t even that bad. It might even be good for organizing. I’m not sure yet how good the component search is in KiCad, it should remain easy to browse through.

I’m going to investigate those derived symbols. Thanks to you all!

Notepad++ is a familiar tool :slight_smile:
Great to hear that text editing remains an option. In Eagle this saved my ass many times but I’m fearing more and more that Autodesk is going to move away from plain text because they are pushing their cloud and closed-source systems so hard right now.

I’ll keep your method in mind. Like you mentioned I have also now seen that same-value defined symbols must be in seperate libraries. For now this might be a good way to go for the first few designs. As long as the value is shown cleanly on the schematic without any weird additives just to make the libraries work, It will (must) suffice for now.
Thanks again

Be careful. One also needs other body parts. :laughing:

1 Like

I have never experimented with it but in symbol properties editing dialog (I all time write about V5, but suppose it is also in V6) you can change Show checkbox for Value so it will be not shown at schematic I suppose. If you can add your own fields and check box Show for them than you will probably have it at schematic. Never checked it but that way you could have many elements with different values and all with the same your field shown. Just do some experiments.

@taven, it sounds like you are looking for something often referred to as ‘Atomic’ parts.

This may be of some help- Digi-Key open sources alpha version of an "atomic" parts library

Yeah, seems like it. The terminology is a bit confusing when not familiar with the other option that the KiCad workflow seems to offer, but it popped up many times while reading reference material.

I’m fundamentally against using devices that are not drawn and maintained by our own team, but I’ll check DigiKey’s library-keeping methods to see if there are other ways to make the move from our old Eagle-based library management system over to KiCad a bit easier. Thanks for the suggestion!

As I have also changed from eagle (6 months ago, after working 25years with eagle) I can confirm that the understanding of the different library-approaches poses some difficulties. You will not get an 1:1-conversion of the library-organization and to be honest sometimes I still miss the old eagle-way.

The best approximation for generic items (RCL) is the use of the derived symbols. You can use one generic symbol (call it master) and all other symbols in the library are derived from that. The symbol-graphics is shared between all symbol-versions.
To create a derived symbol you have to create a new symbol and select the pull-down-menu “derive from existing symbol”.

limitations:

  • because the symbol directly contains the pin-numbers all derived symbols must share footprints with identical numbered pads. It’s possible to create derivatives for SO8/MSOP8/DIL8 (and so on), but a version for different pinnumbers is not (so easy) possible
  • on creating the first derivative all additional parameter-fields are lost. To retain this additional parameters the next derivatives should be ceated with copy/past existing library-symbols
  • the position of additional parameter fields (if displayed in schematic) are not covered (cloned) from the mastersymbol

There is also the option to wait with the eagle → kicad transition for the next release. It is planned to extend the library-system to a database-driven design. Before investing much time into creating a library according to the current library-system it could be interesting to wait for the next release. drawback for this:

  • needs minium one additional year
  • no one (ok, maybe the developers) can guarantee that this feature will reach the v7-stage

@mf_ibfeew
A shame to hear that the library methods can’t be ported over fully, but perhaps it was unreasonable for me to expect that. Now that I have the first few parts in the library it seems it was worth it in the end. Very refreshing experience. Especially compared to Eagle that feels like hasn’t changed it’s core features/problems for the past decade.

I will definitely try the derived symbols. It seems to address the problem of using the same symbol for many ‘atomic’ parts at once, with a few caveat’s like you mentioned.
Thank you so much! Very valuable insights.

I just tried this, but I don’t seem to get the copy to retain the status as a “derived symbol”.
Original part: image
Copy: image

I just tried this, but I don’t seem to get the copy to retain the status as a “derived symbol”.

You are right, a copy/paste-action looses the “derived symbol”-status.

You can use the “Duplicate symbol”-command in the context-menu of the symbol editor to get a new derived symbol.

Thank you!
That works better!

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