Relating pins and pads [KiCAD pitfalls for newcomers]

Kicad does not force you to have numbers for the pins. You can also use pin names instead of numbers.

I created a transistor with pin ‘numbers’ e, b, c and can link these to various footprints that have e, b, c in different positions. Same for FETs (footprints with pads numbered ‘g,d,s’. Works great for such devices where pin numbers are not relevant, like transistors, diodes, capacitors.

But I would not use this method for IC’s. There you just need the pin numbers and thus different symbols per package.


This was the KiCad way a few years ago, there was a 7805 regulator that uses names. This leads to a footprint per symbol and goes against the IPC standard, so now out of favour

1 Like

You need a footprint per symbol anyway (TO92-ebc, TO92-cbe etc) if you want proper silkscreen markings.

I didn’t intend for this thread to be a discussion on how KiCad should work, but…

Once you go through CvPcb, you have one footprint per part anyways. The only difference between KiCad and some other CAD packages is that in the other packages, the person that created the schematic part (and that might be you) assigned a footprint when they created the part. Not just a suggestion, like SOT-23, but an actual footprint that they (should have) verified or created from scratch.

It’s really not much different from KiCad, but you can’t put a part in your schematic until you have a combination of schematic symbol, footprint, and (very important :slight_smile: ) an explicit assignment between the pins in the schematic and the pads on the footprint.

4 posts were split to a new topic: HowTo footprint with pads/pins not on grid?

I’m pretty sure you can put schematic symbols in other tools, that have no footprint and vice versa, footprints that are not in the schematic.

The good thing with KiCAD and how it assigns footprints to symbols is:

  • you usually stick to the numbering convention per IPC
  • if you change a footprint, every part that uses this footprint will get updated automatically

And to top it off, if you create your own libraries and make them ‘atomic’ you have what you want on top of this.
Pre-assigned footprints/partnumbers/etc.
The libraries have to be maintained by yourself = you need to do the work.

1 Like

Or so it seems to you only because you are familiar with the Eagle way of doing things. The same potential for error still exists.

And what made you think they would match? You checked them? Compared them to the datasheet of the actual part you intended to use?

SOT-23 defines a package that has a specific shape and size and number of pins (yes there are variants but “SOT-23” generally refers to the 3 pin variant). And it has one footprint (or 3 if you choose to support all 3 IPC density levels) That’s all! It does not assign functions to pins.

The default pin numbers usually match the most common package. There is no “pretending”, symbols and footprints are separated for a reason. The generic NPN transistor symbol and a few footprints are enough to represent thousands (if not millions) of different NPN transistors. One more symbol for a generic PNP and you now have an equivalent number of PNP transistors available. It’s easy to see how the number of available “parts” increases exponentially with only small changes to the libraries. You also don’t have to update the libraries every time a new transistor comes out. New packages only require a few new footprints.

No matter how much Eagle might have held your hand, surely, even as a novice, you were aware that many components are available in multiple packages.

The same reasons for separating symbol from footprint still hold true for complex parts. But most here would probably argue that a basic 3 pin regulator would not be considered a “complex” part anyway.

Obviously! But the whole point of separate symbols and footprints is that you do this in your schematic, not in your libraries. If you prefer the approach of having “atomic” parts in your libraries you are free to maintain your own libraries this way. Is it necessary to have atomic parts in your libraries to reliably produce PCBs, absolutely not. Nor does it separate “hobbyists” from “professionals” as others here would like to think.

The purpose is quite clear and certainly not the root of any problem. Besides, you keep ignoring when you’re told “that’s how KiCad works”.

Yes you do, especially if you want to connect those pins to ground. If there are NC pins then they too should be shown on the schematic.

Yes, on your schematic or rather in your BOM as those fields are usually hidden on the schematic. But you still need to check the pin - pad association.

Face it, you made a mistake, it happens, learn from it and stop blaming the tools!


Of course you need pin numbers on your schematic, no doubt about that.
It is just that I have not decided on the exact component details at the early stages of design, so it should be easy to switch components, even when such a switch would imply a change of Pin numbers.

So it should be easy to switch between the MCP1754 variants somewhere in the design process and such a switch should automatically update the pin numbers in the schematic.

But Kicad does not support such switches other than by replacing the symbol with another symbol. This is a little bit less than optimal, but not a real problem (to me anyway).

What exactly do you call “proper silkscreen markings”? Surely you don’t actually put ‘e’, ‘b’, ‘c’, or ‘s’, ‘g’, ‘d’, on your silkscreen? You put the part number on there too? If so why? But even so, put text on your PCB silkscreen instead of the footprint. These days parts are so small and PCBs so dense that I have trouble finding room for the reference id.

Yes, I do have c,b,e, on the footprints. But indeed only for the bigger components. There is not always room for that, so I can remove those during layout.

It depends on your target market. If you are designing kits for hobbyists then you need as much info on the silk as possible, even if that makes the board a bit bigger.

I work for different clients. Different atomic-parts library systems, including our in house system.
I also work with cvpcb. I don’t consider myself a professional when working with atomic parts and a hobbyist when working with cvpcb.

Come on guys, don’t be so literal here - live and let live. :hugging:

* Waves at both the ‘Atomic’ and ‘CvPCB’ camps *

1 Like

I have been bitten by that in the past, footprints that are just wrong and (more common) the wrong technology ie hand soldering vs wave vs reflow. Incorrect drill sizes is all too common, both too small and too large. Third part symbols and footprints should always be checked ideally.

Thank you for your detailed response, but most of this has been hashed out already. I don’t disagree with most of it. Mostly it’s differing point of views: “that’s how KiCad works” as you say.

A few comments:

Obviously, other CAD packages do not have parts for every possible transistor or resistor. It’s perfectly acceptable to create a generic 0402 resistor part, and that’s what exists.

Obviously I know there are different packages, but Eagle’s “hand holding” as you call it is simply that they have a process where you explicitly assign schematic pins to footprint pads. Unless someone made a mistake when creating the part (which does happen), there is no chance that the pins will be ordered incorrectly.

IMO this is a missing step in KiCad. Sure, I should have verified it myself, but if there was a step in the process that made me verify it, it would reduce the chances of errors. How many people skip that verification step?

Now you’re probably going to say: “I’ve used this part 1000 times. Why should I have to go through this verification step every time?”, and you would be right. Just add a button that says “Create an atomic part”, and boom, you now have a verified symbol, footprint combination that you can use in the future without worrying out it

.[quote=“1.21Gigawatts, post:50, topic:6186”]
You’re missing the point. The schematic symbol only has 3 pins. The footprint might have 3 grounds and 4 NC, but you don’t show that on the schematic.

Yes you do, especially if you want to connect those pins to ground. If there are NC pins then they too should be shown on the schematic.

Maybe that’s true in KiCad, but it’s certainly not true for other CAD packages. In other CAD packages you can assign schematic symbol pins to multiple footprint pads, and that’s pretty common.

Are you saying that for the simple 3-pin regulator that I listed in the OP, you have to have 4 schematic symbols for it? I’m pretty sure that’s not true, since I’m using a part now that has multiple ground and NC pins, and there’s only a single ground in the schematic and no NC pins.

Yes, I did, and I have, but that shouldn’t prevent me from suggesting some improvements in the software.

As does KiCad. The pin number on the schematic is the pad number. The symbols in KiCad’s libraries simply come with these fields already assigned defaults, which usually match a commonly used footprint.

The “step” is implied but not enforced. It is up to you to know when you need to execute it. As you point out, you don’t want to be forced to check it every time you use that symbol/footprint. In your case you chose to accept the defaults and skip the “step”.

In KiCad pins and pads have a one-to-one relationship. But you can do things like have multiple symbol pins in the same position with all but one hidden. Then when you connect to one you connect to them all. You can also have hidden pins marked as “NC”. Both of these methods reduce schematic “clutter” but they also hide information from the human reader.

The reason for having NC pins on the schematic in the first place is to inform KiCad that you intentionally left these pins unconnected so that they are not reported as “unconnected”. Extra ground pins for example are also included on the schematic to ensure that they do get connected. This information is passed on to PCBNew via the netlist so that PCBNew can prevent you from making connects to NC pins as well as making sure you connect the extra ground pins etc.

No, I’m not even sure where you get that idea.

Edit: Now that I think about it for a minute I understand where you get that idea. You would only need four symbols if you plan to use all four packages.

1 Like

In the current version of kicad i would vote for yes. Why?
Well it is the more complete solution. Otherwise you would need to design your own footprints where the pads have the numbers you expect. The 8 pad footprint uses pins 1,4,8 and the 3 pin version obviously uses 1,2,3. Also i think if the sot 223 footprint is in the lib the body contact might have a different pin number than 3.

In short: You can either make the symbols fit existing footprints or make one symbol and create your own footprints that mach this symbol. (The first option is what is used in the official library. See the library convention)

About the future of kicad:
I think there are plans to make this easier in future kicad versions. But as i stated above it will probably not happen in the next release. The developers simply have not finished everything required for that. It was originally planned that the new library format will be included in v5. But now we can only hope it will be included in v6 (Which is a few years away.)

I think the second option should be discouraged. The pin numbering of the package is defined by a standard, changing it on your board to match your schematic would be very misleading.

1 Like

It is not mandatory. A schematic component may have 1 pin number x and the footprint may have several number x pads. It works.

I agree with everything else in your post.

Yes, this is due to PCBNew treating all pads with the same number as being the same pad. As I stated above however, pins numbers for a standard package are defined by a standard and as such we really shouldn’t be changing them.

This is often true and I strongly encourage compliance with standards.

However, manufacturers’ datasheets have sometimes been non-compliant to pin numbering conventions. A few months ago we had a discussion here about pin numbering of two-row pin headers. As I recall, we found at least two, perhaps three different pin numbering schemes among different manufacturers.

I don’t know the best way to deal with this situation in an EDA library. It makes sense to select an approved part and adopt whatever numbering convention that manufacturer’s documentation shows. But what do you do with an alias part, second source, or alternative part if the manufacturer’s documentation is in conflict with the primary part?


1 Like