Remove "All units are interchangeable" from the Symbol Editor?

It’s just for graphics/pins. When it’s checked, any changes you make in one unit are applied to the other units as well (or rather, the graphics and pin placements are the same across units).

The actual text in KiCad is “all units are interchangeable”, not “parts”. Searching that gets you here: Schematic Editor | 8.0 | English | Documentation | KiCad

Admittedly I think this could be explained somewhat better.

Oops. Mea culpa. I’ve changed the title and slapped myself.

Apart from that, I understand exactly what it’s for. And it’s unnecessary, confusing and intransparent.

Stay with the opamp for example. You have once designed a schematic symbol for an opamp, and now you want to make it a bit smaller, or shift it’s pins a bit. It would be a nuisance if you have to redo the copy & paste step after modifying one Unit. If you forgot to do that, then they would look differently.

I see this as too limiting. Very often a footprint has some power pins, and this breaks the All Units are interchangeable. If I now look at an LM2902 and then move a pin in "Unit A

and then switch to “Unit B”, then this has not changed, and thus the units of this quad opamp have gotten out of sync.

If you want to solve this with Copy & Paste, then you have to be very careful to copy all the graphics (make sure you delete the old), and not copy & paste the pins. It is quite easy to make mistakes here. What is needed, is some method to in KiCad to specify that some units have the same graphics (Units A, B, C, D) but not all of them (Unit E with the Power pins are separate). The current implementation to copy the graphics between Units A, B, C & D is a kludge.

in that case, you’ll have to rewrite the KLC.
I find your examples somewhat far out. How many times in your life have you resized or redrawn a symbol? Think of the ramifications to all your schematics.

I’m just trying to remove useless “dead wood” here.

To take a contrary position, maybe what’s needed is a refinement, rather than removing this feature? :smiling_imp: Power units break the utiility of the feature. So maybe <list> units are interchangeable, or All units are interchangeable except for <list>?

1 Like

Interesting idea.
Instead of removing a pretty useless feature, you “improve” it by adding other features on top?
Sounds a bit like buerocracy blooming to me. :slight_smile:

Don’t get me wrong, I love working with KiCAD. New features are nice, but some old ones need to be reviewed. paulvdh’s arguments haven’t convinced me at all. And every new feature raises the entry bar for new users.

Not at all. To be fair, I do not use KiCad much at the moment, and I do not have much experience with designing / modifying multi-unit symbols. But it is a task that should “work” without kludges.

@retiredfeline
Some option to “(Re-) Use graphics from unit X for this unit” could also work.

And the comma separated pin number list is yet another option. It also has the advantage that you can immediately see how many units there are and how the pins are shared.

Yes, bu tthe improvement makes it possible to use sharing where the power unit prevented it. I think the sharing might be a hangover from when hidden power pins were used, then the transition to explicit power unit broke it.

Proper gate and pin swapping has never been fully supported in KiCad. There is an open issue for that on gitlab for many years now. The way of copying graphics to other units is also incompatible with this. KiCad has to know which units are interchangeable and how to map the pins.

Well, I do. And the “kludge” is not the copy/paste solution, but the current one. Who says all units in a multi-unit symbol are the same? There are transistor arrays with PNP and NPN transistors, or N-ch and P-ch FETs, or amplifiers with a built-in reference and, and, and.

The transparent way would be to treat all such devices in the same way,

Please don’t mix things up.
Gate swapping works wonderfully in KiCad, “Pin swapping” is a different issue that a thread hijacker introduced. Don’t take that up again.
My original question was concise and to the point.

Well, I say 44 multi-unit symbols have the same units; in the entire Kicad supplied libraries. :grin:

We are playing in a very marginal area here.

The reason to implement interchangeable unit groups properly is not just the data sharing. It could also improve error detection. Currently if I change the unit from a NOT gate to a power unit, the error is discovered only when the graphics changes and connections break. If KiCad knows the unit I want to change to is not compatible, then it could intervene.

The reason I’m uncomfortable with getting rid of the interchangeable unit feature is you are throwing away information. Admittedly most of it was thrown away in the past due to power units.

Did you really go through the full library? You need a hobby. A garage and a vintage car is my thing :slight_smile:

It was too bloody hot outside to do anything much yesterday, even in the shed, and is is easy to check through the libraries now days.
I’m off to play shortly, just decided to look in here first, to see if there was any action.

Does gate swapping work in symbols (such as opamps) in which the graphics is copied?

Yes, indeed, agree completely. A good implementation would be some method for KiCad to create (and maintain) such symbols in a concise way. It is not just about the “All Units are interchangeable” checkbox. It’s about a proper method for defining multiple units which share graphics. That checkbox is mostly a historic relic. KiCad has never had a method for complex symbols.

some time ago I started on a project with an STspin. It’s an STM32, but with built in extra hardware that is commonly used in BLDC motor controllers. It has:

  • STM32 uC.
  • SMPS.
  • 3x Low side gate driver circuit.
  • 3x High side gate driver circuit.
  • Several Opamps for current sense amplification.
  • Maybe more (The project never got very far for various reasons).

However, this IC is an excellent example for the need for being able to design a complex schematic symbol with a lot of units. When designing such a symbol, it’s also likely to get a bunch of revisions, and the graphics for the different gate drivers getting out of sync would be an extra headache that should be avoided by a proper implementation for such symbols in KiCad.

Interesting objection. But actually you’re not.
The only difference is the storage format in the symbol library file.
The “interchangeable” symbol is stored as one graphic and four instances of the unit pins.
The “non-intechangeable” is stored as four graphics with pins listed for each one.
There is no information loss anywhere. Look into a symbol library file yourself. It’s plain text.

Yes, certainly. There is no difference between the different “types” of symbols there.
It’s just a question of choosing “unit A” or “unit B” and the pin numbers change accordingly.
This discussion is purely related to the symbol editor, not the schematic editor.

So, all this discussion seems to break down to “All units are interchangeable” needs to go, and a more versatile button is needed to replace it: one that includes “All units are interchangeable” but will also cater for “All units are not interchangeable”?

Perhaps something like “Unit interchangeability” where you tick the unit boxes you wish to be interchangeable? The rest you create as you see fit?

1 Like

I already pointed out a situation where the equivalence information can be used.

As for “bureaucracy” KiCad asks for a lot of settings everywhere. Fortunately most of it can be ignored and defaults accepted until you need to use it. This one just happened to annoy you. It can be de-emphasised or made more general and powerful and kept away from beginners.