Symbol inheritance

Up from V6 there is a possibility to derive symbols from other components to avoid multiple graphic drawing definitions. To test this feature with Sub-D connectors, I did the following steps:

  1. create a new library partition named “generic.kicad_sym”
  2. create a one pin male symbol
  3. create a one pin female symbol
  4. create a two pin shield symbol what should represent the electrical connected mounting holes

After this, I create a new library partition named " mySubD.kicad_sym"
A new 9 pin female Sub-D connector now should be composed by using 9 units of the generic female symbol plus one unit shield symbol assigned to the existing default footprint DSUB_9_female…

This way, all 9 pin, 15pin, 25pin, 37 pin male and female vertical and horizontal with or without mounting-bolts should be possible only with derive from the 3 diffrent symbols. I stuck here as the editor only offers to derive from symbols of the same kicad_sym file instead of my generic.kicad_sym file. If I try in the same file, I cannot reuse the symbol 9 times for every pin. Only one more unit slot will be offered with missing connection line.

We could repeat this with all kind of amplifiers. Eg. have a generic amp triangle and a generic power box. Then start to compose TL084, LM324, all quad, dual and single OPs only using ASCII definitions without any more graphic drawing.

Shouldnt this be possible or did I understand the derive/inheritance feature completely wrong ?

Like a kind of “LEGO” library?
First time I hear that idea.
If you’re talking about the “Derive from Symbol” field in the Symbol Editor, it works differently. It allows you to define a new symbol using an existing one. Eg, create a TL084 symbol using the existing LM324 symbol as basis.
The TL084 symbol will not really be created, but ASCII added to the LM324 symbol as an alias. This can be seen in the symbol list, as “TL084” will be in italics.
As this is just a name alias, you’ll of course not be able to link to other library files.

All aliases from my V5 libraries are now derived symbols in V6 libraries.

I didn’t worked long with V6 libraries so I’m not sure but I understand derived symbol as derived from one whole symbol and not from a part of it or a way to compose new one from many source symbols.

It looks to me like this feature is basically “broken by design”…

You can always “save as” the parent symbol and then re-name it.

That would effectively be the same as (redundantly) duplicating instead of referencing?

I see your point, but, everything on a schematic (since 6) is a duplicate of something in a library. Libraries are no longer needed to open a schematic.
The alias is referencing the parent only until you wish to use it, after which duplicates are needed.

As for the “lego” library, this would be a giant leap backwards to the 4 & 5 era.

The matter is very simple and in meantime I read the epic 38 for V7 lib.
Ecad users may see any orderable component as a logic description.
Possibly Kicad needs to have several iterations to come to that point.

To use any component in pcb, it needs to have minimum one link to a footprint.
If link to footprint is missing, the component is orphaned and cannot be populated on pcb.

To use any component in schematic, it needs to have one or more graphics.
If graphics is neither included nor linked, its orphaned and cannot be drawn in schematic.

@janvi

Totally understandable. Most of Kicad would not work without symbols and footprints.
Sometime ago I built a schematic? with wires and graphic tools… no symbols.
As an experiment I tried to see what functions were available to me: result was “very little” :slightly_smiling_face:
The schematic was just a wiring diagram for my tractor.

I should also confess I neither place Kicad nor 3rd. party symbols or footprints on my schematics and PCBs. I only ever use symbols and footprints from personal libraries, so, I have the tools.

I understand your comments, however our library philosophies are totally different.

Having the inheritance between diffrent kicad_sym files is a basics but only a fractional part of effective inheritance. The main disadvantage seems currently, that the amount of inheritance cannot be controlled by the user. There seems no issue on GitLab therefore? Everything happens at runtime of the symbol editor for what it should be feasable to realize without touching the existing symbol files s-format.

As soon as I select a parent symbol to derive, all other important properties are greyed out. This are mainly the number of units per package, pin number, pin name and the swapping rules.

Inheritance should be seen as a reuse of graphic parts of existing symbols. A child symbol may have one or more parent symbols. The only rule for compability is to match the number of pins from graphic symbol with the used unit(s). Pin numbers and pin names in the parent graphic symbol should be considered as a variable placeholder what can be overwritten by the children in order to their needs.

This would allow to move several features from the symbol editor to schematic editor for drawings with more fractional unit symbols in the schematic. I remember a years old video probably from another forum member here what explained the change of schematic styles with the appearance of high pin count BGA components. I believe it was a contribution to any old Kicad users conference. First he explained the „old school“ diagramms with valuable artistic attributes like we find in franzee´s Elektuur style lib. The author then went to opposite extreme what was a circuit diagram composed as a netlist inside a spreadsheet without the use of any graphic symbols. Unfortunately I cannot find this video anymore but it describes the library problem best upon today. Whatever we find in the library, its not what we are searching to draw our circuit diagram.

Dont know who opened the issue, but also others already expected the same idea:

Moreover, if we need to duplicate a symbol to duplicate a “component”

The issue is here:

The state of issue seems “closed” (but unsolved or not understood?).
What is the status "awaiting spec docs " ?

The gitlab discussion there is on 2 diffrent topics.

One is to separate graphic informations,
the other is to use a database instead of file stored S-expressions.

They are totally diffrent and do not affect each other

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