Hello, I’ve been a long time Eagle user (since 1996) and teacher (since 2008). But, desktop Eagle will end in 2026, so I’m planning to move to Kicad. I dabbled in Orcad and Altium in the past, so I personally don’t have much trouble with Kicad’s added complexity. However, teaching it to newbies is quite another matter, and I’m always trying to show them the most straightforward way do do things. Therefore, I’d like to ask about “advanced” operations with multi-unit parts, since I couldn’t google any user-friendly solution myself (for version 8.0.4 or any other).
Suppose I wish to use ADA4622-4xCP, which is a quad opamp with pre-assigned footprint. Therefore, it has 5 units, A to E. I already know I have to check the “Place all units” box, otherwise I’d have to choose them all manually from the part tree, one by one. But even with the box checked, the process is far from straightforward. Suppose I start placing the opamps, but place only 2 of them, then interrupt it and use some other command. They get U1A and U1B reference designators. Now when when I place another 2 opamps of the same type, they get designated U2A and U2B. Suppose I don’t notice and update the board, so I have two useless footprints in it. To fix it, I have to consolidate the the 4 opamps into one footprint… somehow. So far, I’ve found only 3 ways, all ugly and error-prone:
Manually rewrite references and manually switch between units in Symbol properties menu (E key).
Delete all units and place them correctly in one sitting.
Delete only the offending units, then manually choose the correct unit letter(s) from the part tree. Kicad will then continue with previous reference number… theoretically. But in complex schematics with multiple parts of the same type, this still doesn’t ensure Kicad will assign the reference number I want.
Is there some easier and more foolproof way to do this? I routinely do boards with 20+ opamps (and/or logic gates) and such manual reassignments can get confusing quickly, even to me. Is there a command similar to Eagle’s Invoke, which would allow me to see which units are already placed and which are unused for each part?
Thanks!
BTW, Eagle always increments units automatically as they are placed and adds new footprints only when necessary**. Is there some hack (or hidden option) which would always ensure the same in Kicad?
**That’s not always welcome, but you can easily prevent it by copy-pasting the unit(s), just like in Kicad.
Multi-unit symbols are not very intuitive. There also is not much documentation on the details of designing multi-unit schematic symbols.
KiCad also does not really have pin and gate swapping. It’s one of those features that are on gitlab for years without getting much attention. (Overall, KiCad development is amazing, with around 300 issues getting fixed each month, but about the same are also opened each month, and the total of open issues is relatively steady with around 1500 issues.
You pretty much summed up the mayor ways to fix the schematic. I do not use quad opamps much, but when have a symbol like that, I usually start by placing all the units of the symbol on the schematic, and never abort the function. Unused units, I place outside of the “drawing paper” area. I use the area outside the border as a generic clipboard to hold all sorts of snippets until a project is almost done. Then it gets a cleanup.
That’s… unfortunate, even when your “place unused units outside borders” tip actually is viable-if-ugly workaroud.
But, I’d be willing to try another way. While I’ve been lurking around Kicad forum and Gitlab ever since Autodesk announced Eagle’s EOL, I’m not very familiar with its development cycle. Are there some programmers who would write the necessary code if I commissioned them to do so? How much it would cost? And perhaps most importantly, would it be then accepted by Kicad’s current development team (and by extension, community)?
BTW, Kicad acutally has Swap command now, but it allows you to swap almost any two objects, without warning. And I think its key assignment is bugged (duplicate with some other command), unless they resolved it since 8.0.1. Not very good for newbies…
Parking the unused units outside the paper is practical / efficient / quick. It also gives an overview of the available spare units. But I do agree it’s not ideal.
Pin & gate swapping is among the oldest unresolved issues for KiCad, opened in 2007.
Another workaround is to only use dual opamps. It eases routing around the opamps too, which is a good thing for beginners.
Commercial support for KiCad is available via https://www.kipro-pcb.com/ They also do “priority development” for a fee
Some time (weeks) ago I browsed though a list of KiCad developers on gitlab, but unfortunately I can’t find that list anymore right now. From what I remember there are about 20 regular developers (2 or more commits per month) and there are a few hundred people who have contributed one or a few patches over years. So there are a considerable amount of “small contributions” to the code.
If you’re serious into looking into KiCad development yourself then start with:
Top of that page links to a mailing list for KiCad developers. They can give you better answers then I can.
Place U2A. Do something else.
When you wish to place more U2 parts, hover mouse over U2A and type hotkey ‘A’ for Add.
The Symbol Chooser chart will be displayed with the A Unit of the IC, over which you hovered the mouse, at the top of the list.
Highlight the B (or other) unit, press enter, and U2B will appear on your schematic.
Each additional Enter will place, consecutively, (in this case) U2C, then U2D, then U2E.
If, for example, you have placed U2A, B & C; hover mouse over any one of the U2 parts on the schematic, press A and select D, then Enter for D placement. A further Enter will give E part.
@jmk: that’s just “ugly and error-prone way #3” from my OP, though. And it doesn’t work, anyway - hovering cursor at other part type still opens the same menu. In other words, there is no difference where/when I press A. But even if it worked, you’d still have to manually keep track of the units for every part in the schematic. Again, that may be fine if you have 2 or 3 such parts on one sheet. But it gets confusing real quick in multi-sheet schematics (e.g. when you have power supplies and their units on a separate sheet).
On the other hand, I don’t think Kicad needs a new command like Eagle’s Invoke to solve this. Maybe the new Property manager could be “bent” for this purpose? It could display which units are placed and which are not, and user could click on unused ones to place them. It would also need to display on which sheets the placed units are. In essence, it would work like Invoke, but within existing UI framework.
The method I described certainly works. Yes, to be absolutely efficient, you need to manually keep track of the parts you have already placed.
Below are the results in column forms:
A = I placed parts A&B
B = I forgot part C, so D&E are placed but I returned to place C
C = I forgot I had already placed part B so part B is assigned U3 ref. but parts C, D & E give the U2 ref.
I don’t consider this to be clunky or error prone, but I am not familiar with the Eagle way, only the Kicad way.
Also, I generally work using the same method as @paulvdh . I place all the parts of a symbol on the workspace, as I consider placing only parts “as needed” clunky and error prone. Invariably, what is placed on the schematic for a four op-amp IC is rarely the way those op-amps are connected with tracks on the PCB. Gate/Op-amp swapping in usually necessary.