Why are ground pins hidden in the official library?

Sorry to barge in, but I was using an ATmega328p symbol and there seemed to be a GND pin missing but it was hidden, why is this and how do I use it as it was over the top of the visible pin? I only found it by grasping at straws and frustration…love Kicad!

What you encountered is called pin stacking. KiCad has no direct way to assign multiple footprint pads to the same symbol pin. So if the device defines that a number of pins must always be connected with each other, then we need to stack these pins. (At least if the symbol designer wants to take part of the responsibilities of the circuit designer.)

For power input pins (or any input pin) it is really “just” a matter of taste if one stacks pins or not. But there are also cases where stacking is the only option that gives reasonable results for ERC. (The official lib therefore decided to be consistent and stack pins unless there is a good reason not to stack them)
See the library convention on our policy regarding this: https://kicad-pcb.org/libraries/klc/S4.3/ (One of the major differences between the KiCad lib and the libs of many other tools is that we clearly and openly document our rules.)

This is especially the case for output pins that must be connected. ERC complains about multiple output pins being connected so having more than one of such pins use the type output is not an option. However, if one does not stack the pins and gives only one of them the type output then DRC might miss the critical error of a user connecting another unrelated output pin to one of the output pins that are marked differently. (By avoiding false positives one gets the much more dangerous false negative)

See also Electrical type of schematic symbol pins (KiCad 4 and KiCad 5)

Thank you for such a fast and concise answer, how do I use this in a practical way as in a breakout board I was making ? do I simply take GND wires from the chip to the edge connectors so that all the GND’s are available on the breadboard in the normal way, as they are internally connected anyway ?

I assume you are making DIP type breakout. I suggest one of the DIP pins will be GND, that pin will connect to all GND pins on the ATmega328 on the breakout PCB.

Might be better to have at least two GND pins depending on how far apart the two pin rows are. (Possibly near the middle of each of these connectors. The same might be a good idea for the positive supply as well.)

General tip: make it so that you have a hard time connecting the board the wrong way round (have one side with one additional pin or have them misaligned)

Thanks to you and bobc, the breakout board is a TQFP that is pin for pin, in a “arduino nano” form factor with 16 pins on the left and right, I was curious as to why the symbol does not simply reflect the package as I would buy it, I made my own symbol as its so easy in Kicad, I would imagine Im not alone in wondering this, I think all the pins should show but I’m a newcomer to this and i am sure there is good reason for it, thanks for your help.

The symbol is an abstract view of the components function. This is because the schematic typically is also an abstract view of the systems function. (Otherwise complex projects would become a nightmare to understand.)

Ok, but from a practical sense I still feel simply putting the correct pins there for us to do with what we will would be better, after all we simply add a “no connect” and be done with it, but I am a newcomer and I have learned a valuable lesson today thank you.

You would not want to add a no connect. You would want it connected to ground as specified in the datasheet.

Also if the library symbols do not fit your own needs then adapt them as needed. (We can not provide a library that fits everyone. This is why we document how everything has to look like. Both for contributors to know how to make stuff to be included but also for users to know what to expect) Tutorial: How to make a symbol (KiCad v5.1.x)

1 Like

[quote=“mousey, post:6, topic:20822”]
I made my own symbol as its so easy in Kicad,

Sure, I wouldn’t leave a ground flapping about, I meant in general, having all the pins means the decision on what to do with them is between me and the datasheet, I dont no how you would design a symbol with “stacked” pins and doubt I ever will, and no, a library cannot meet everyone’s demands, however I will be mindful of all this in the future, this is something I guess you learn as you go.

I have run into this before and it is confusing. I know this part has 4 ground pins but the symbol only has one. It works as long as all pins connect to the same node but not if your are in development and doing anything weird.

A better solution would be to use a “Bus” pin that was wider than a normal pin for stacked pins.

The version 6 file format will (as far as i am aware) support assigning multiple pads to one pin making pin stacking obsolete. (There will then for sure be a way to show the fact that this pin represents more than one pad)

The only thing i could imagine is that the v6 file format might not get all the planned features ready so some of the things we expect might be pushed back to v7.

I know its a way in the future, but any plans for how the official libraries will be migrated to the new format?

We will test the KiCad integrated conversion as soon as it exists and create bug reports until the conversion is good enough. And we will of course continue our normal work (example removing invisible power pins from the remaining logic family libs)

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