ICs and Sockets

I’m a new user of KiCAD, and am trying to implement my first project. It’s a combination ADC and DAC with a variety of additional components. The circuit makes use of an MCP6044 (a quad op-amp). Although in the schematic this shows up as four individual op-amps, I would like to mount the IC into a 2x7 socket. I’m very confused about how to manage the handshake between the socket in PCBnew and the circuit in eeschema. Is there anyone that can point me to an online tutorial on this topic?

Many thanks!


Although you see 4 op-amps in the schematic, the chip is only one. You will see that every op-amp has different pin numbers. These pin numbers match the pin numbers of the 2x7 footprint.

You mean something like this?


Looking at the schematic I just put the socket in with a bunch of no connects outside the work ares so it would show up in the BOM and on the PCB. You have to adjust the axis of the chip to get it ‘up’ over the socket. Not sure it is needed for anything other than the BOM though.

1 Like

Verify that this is true in your schematic. Also, verify that each opamp symbol has the same basic reference designation but differ in the section designation. I.e., they should be designated as something like “U3A”, “U3B”, “U3C” and “U3D” - NOT “U3A”, “U4A”, “U5A”, and “U6A”!

The library symbol may also have a fifth section, (“U3E”, if I continue my previous example) which contains ONLY the power pins, shared in common by all the other sections of the chip. Be sure to place the power section someplace on your schematic, and make the appropriate connections. The opamps will not work without power connections, but I don’t believe either ERC nor DRC will squawk out a message saying, “Hey dummy, you have some opamps on this board but you didn’t connect them to any power source.”

(If your component’s symbol has a separate power section, and you forget to place it on the schematic, you’ll end up supplying multiple co-workers with servings of their favorite malt beverage, in hopes that your supervisor will not learn of your oversight from those co-workers. This can adversely impact the amount of month left over at the end of the money.)



It should be ERCs job to complain about a missing power block, an easy mistake for a beginner to make.

1 Like

Sadly kicad right now has no way to complain about missing units. I would assume the ERC overhaul will bring such an option.

I think i made a suggestion at a related bug report along the lines of:

  • Not placing a unit with power input pins is an error
  • Not placing a unit with input pins is a warning (can be turned off)
  • Any other missing unit is either a warning or info and can also be turned off.

This could of course also be configurable somewhere.
Maybe the new file format could also include a flag for “this unit is required no matter which pins are on it” and another one with “this unit is optional” (These two flags could be used to overwrite the above handling should the pin types on this unit give a wrong result otherwise.)

1 Like

Yes, I noticed that the pins are all different. The comment concerning the power pins (“U3E”) is very useful, and I have now added that to my schematic. Thanks!

Yes, just like that. I’ve now worked it out (I think :)).

What I’ve done to achieve the above is the following:

  • I have an MCP23017 I/O expander, DIL shape (28 pins)
  • I’ve added a connector 2 rows, 14 pins (Conn_02x14) in my schematics and stubbed all connections (added X to all connectors).
  • In the PCB footprint assignments (still in schematics), I assigned a DIP-28_W7.62mm_Socket_LongPads footprint to the newly added connector
  • I left the original MCP23017 footprint DIP-28_W7.62mm_LongPads untouched.
  • I re-created the net list
  • I went to the PcbLayout package and reloaded the updated netlist: the new socket for the 2x14 pins connector was added.
  • I first moved the MCP23017 for 3.5mm in the Z direction, to “lift it off” from the PCB (that is, making space for the future socket to add)
  • I then moved the 28 pins socket at the same spot as the MCP23017 chip (which is now “floating” above the PCB).

This is the result:

Note that the other MCP23017 (in front of the highlighted MCP) has not yet a socket, it was just a try-out.

@hermit: Is this the way to go? Is this the way you did it to achieve the same? Or did you apply another approach?
Just curious about your methods…


When I add the IC sockets like this, I get “Path too close…” errors when running DRC check on my PCM layout. How did you overcome this?

In footprint properties 3D settings you can have a list of 3D representations of something.

Just add a socket and lift the chip itself up about 4 mm or so. That’s it.

Yep, that’s what I did too. A local copy of the footprint with two 3-D models (one for the socket and one for the IC), with the IC raised up enough to fit properly on the socket. This means there is no effect on either the schematic or the PCB layout.

@jos @kpfleming: Well… I’m surprised, astonished even… Again… About the power of KiCAD. This is a “feature” I never explored so far (because not knowing it existed…) and it’s so much better than the lengthy messy procedure I tried out (and resulting in breaking the PCB routing…).

Thanks guys!

This is similar to how I did this on a board a while ago. Here is the technique that I used: (hmmm… discovered that I need to update this design for v5 while generating screenshots…)

  1. I made my own symbol for sockets and included it in my schematic next to where I have the IC’s power gate. I prepended an “X” to the IC Ref’d for the socket. So in this case I have U1 for the IC and XU1 for the socket.
  2. The footprint for the IC is the socket footprint (DIPS = Dual Inline Package Socket), and the footprint is the chip with a raised 3D model (DIPfS = Dual Inline Package for Socket). The thinking at the time is the footprint with the pins going through the board is linked to the symbol with the electrical connections. When explaining this later I found the thinking was a bit convoluted. I’ll probably smooth the thinking out for future implementations.

  1. When laying out the board I put the two footprints on to of each other. The Ref’d for the socket goes under the part since it is only useful when loading the parts. The Ref’d for the ID goes outside the part since it may be useful for troubleshooting with all the parts installed. Both Ref’ds near pin1 as per personal convention.

This technique has some pros and cons:

  • Pro1 - All ICs and all sockets are in the BOM for ordering.
  • Pro2 - For boards with multiple ICs the socket symbols add documentation to help remember which ICs have sockets, and how many pins each IC has. See this screen shot from a different board from the same project:
  • Pro3 - 3D view representations closely reflect expected physical look of the finished PCA.
  • Pro4 - Since the symbols of the sockets don’t actually have pins, there are no pins to mark as not connected (which isn’t really accurate), and there aren’t any pin mapping issues because the footprint for the socket also doesn’t have any pins.
  • Con1 - During board layout, each IC has twice as much work to place footprints.
  • Con2 - Need to remember to move both footprints when moving parts around during board modifications.
  • Con3 - Will probably cause conflicts if using courtyard checking during DRC.
  • Con4 - As noted above, my choice of which footprint goes with which symbol is confusing.
  • Con5 - For some people the socket symbol on the schematic is unwanted clutter. This isn’t a con for me as I value the extra documentation, but then I’m of the school where unconnected mounting holes also have value on the schematic.

Just demonstrating another way to skin this particular cat.

1 Like

Hi @SembazuruCDE ,

Thanks to the input of @jos and @kpfleming I changed the way I composed socket + chip completely. I went the following way (example given for a 24 pins 7.62mm wide IC but the way of working is the same for whatever DIL chip):

  • Open the Footprint Editor (no need to have a project open, you can do this from the main KiCAD dialogue screen)
  • Make sure you have the Package_DIP library available. If not, add it to the list of libraries
  • Expand the Package_DIP library and select the (in this example) DIP-24_W7.62mm_LongPads (or the regular pads, whatever you prefer most)
  • Right-click on the item and save it to your own personal library (we don’t want to change the content of the original library)
  • Move to your own library and expand the content: a new item should be added.
  • Select the item DIP-24_W7.62mm_LongPads and then select the icon Footprint Properties in the menu icon bar on top (positioned next to the last zoom symbol)
  • Once the Footprint Properties dialogue is open, select the 3D Settings tab: you should see the IC in 3D view
  • Go to the Offset section (bottom-left) and change the Z parameter from 0.0000 mm to 3.600 mm: this will lift up the IC just enough to fit onto the socket that we’ll add in a minute
  • Next, click the + button just above the 3D view: a new line will be added in the 3D Model(s) section
  • Copy the content of the line above and paste it in the new line + postfix it with _Socket; this should be the result:

    See the red indications: one is to show the postfix and one is to show the result. You see that the socket and IC fit nicely.
  • If you press OK then your copy of the DIP-24_W7.62mm_LongPads will now contain both the chip as well as the chip socket
  • If you now go to your schematic and put a 24-pins IC on your scheme you can select your newly created IC + socket combination when assigning footprints. The result will be something like this:

    Neat, heh?


  • No need for extra sockets on your drawing
  • You can use your original IC on your schematic and wire it as if there were no sockets around
  • Your PCB can be routed as if there was only the IC, but in reality it’s the combination of both IC + socket
  • The resulting 3D view is almost the reality


  • Any? Pls. let me know…

Just wanted to let you know there’s no need for extra stuff on your schematics, you can do it “the straight way”…

1 Like

I think the only disadvantage of your method is that the socket then doesn’t appear in the BOM so you need to remember to add it. Which is more important? An accurate 3d view or an accurate BOM - the choice might rather depend on your individual situation. Putting the socket it on the schematic (perhaps on a separate sheet) does address this but, of course, does ‘clutter’ or confuse it slightly. The same principle applies to lots of ancillary items - heatsinks, RF shields, mounting screws etc.

1 Like

Well the question is: should the schematic cover the full BOM of the system or just the BOM of the parts needed to assemble the pcb itself.

I tend a bit towards the latter. Meaning there is a separate BOM handling for the system. This BOM can then combine multiple pcbs, mechanical parts that need to be manufactured (with drawing numbers), standard components like screws, cables and connectors (including crimp connectors), …

It would then be debatable if the ic would be part of the pcb part list in this case or if it is part of the system part list (I would argue that only the stuff needed by the pcb assembly house is part of the pcb bom. So if they insert the ICs into the sockets then yes they will need to be in the pcb bom, otherwise they do not have a place in this BOM, The same holds true for heatsinks and other parts not soldered to the pcb.)


In no way do I want to say that the method you used is incorrect, but neither is my way incorrect. They just have slightly different outcomes while getting the same 3D view. I’ve used the multiple 3D object for my arduino “sockets”. Usually they are several pin-headers or pin-sockets spaced appropriately for the module being used. So I use multiple pin-header or pin-socket 3D objects from KISYS3DMOD and adjust their x and y offsets to line up with the holes in my footprint.

Personally I value having sockets in my schematic generated BOMs (mostly because I would probably forget them otherwise). I use the socket names on my schematics to remind myself of the IC pincount when trouble shooting (so I know when looking for U3 that I’m looking for an 8-pin, 14-pin, 20-pin, etc). But I also recognize that some people only want the logical circuit representation on the schematic and physical considerations are handled elsewhere.

Good thing KiCad is flexible to support both workflows. :smiley:

There is a fine line between parts that are board assembly only vs. system assembly. I just chose to put IC sockets on the board assembly side. :wink: (Hell, if I wanted to argue (which I don’t) I could say that the actual ICs themselves are system assembly because they don’t get directly soldered to the board… :laughing:)

Often for myself, this being a hobby and all, I like to include at least basic indication of mounting hardware for the BOM at my mounting holes. I usually don’t have, or need, system drawings for my little one-off designs. So if I don’t put some extra bits into the schematic I don’t have anywhere else to put them.

In my experience, the schematic does not contain the ancillary items. Instead, they are included on the fabrication drawing.

I suggest to put them in the Fab layer in PcbNew.