I recently designed a spun a very simple board that just connects a couple of DIP sockets.
On receiving the result from JLCPCB, I’m extremely frustrated that though my standard dual-wipe and machine-pin sockets fit into the board just fine, the ZIF socket that I designed this for doesn’t go in. While the clearances for the larger, uh, “courtyard” I guess you call it? and the handle and so on are all fine, the ZIF socket pins can’t fit into the holes on the board, because the ZIF socket pins are apparently bigger than “standard pin size.”
The problem is that the footprint I’m using is Package_DIP:DIP-28_W15.24mm, which has 0.8 mm holes. I had searched for “ZIF” in the footprint library, found nothing, and so I used the DIP footprint that turned up in the first few dozen search results for “DIP-28.”
I now see that there’s also a Package_DIP:DIP-28_W15.24mm_Socket footprint (that comes up much later in the search results), which has the 1.0 mm holes I apparently need, and is even described as “3M 24-pin zero insertion force socket, through-hole, row spacing 15.24 mm…” But of course this doesn’t come up when you search for “ZIF”.
I suggest we add “ZIF” to the name or description so that people searching for the term most often used for these will find it.
I just did a search for zif in KiCad’s default libraries, and KiCad finds a whole lot of 3M textool sockets. I checked the hole size of one of them, and it’s 1.0mm, and that is usually enough for the “normal” square pins.
Becoming frustrated very rarely helps with anything. I hope you can turn your frustration around and consider it as a good lesson to triple check your work if you start modifying symbols or footprints. It’s not difficult to make changes, but it has to be done meticulously. There are many area’s where small mistakes can be made, and small mistakes can lead to big errors.
One way to fix this mistake is with headers with round pins. These are thinner then the square pins. So you can solder one end to your ZIF socket pins, and solder the other end into the PCB.
I just did a search for zif in KiCad’s default libraries, and KiCad finds a whole lot of 3M textool sockets.
Ok, I think I see what’s going on now.
On my schematic I’m using the 2764 symbol (modified in the schematic editor for my purposes). This has a footprint filter of DIP*W15.24mm*. When, in the schematic editor, I go to assign a new footprint I assumed that the ZIF sockets would match that filter and so didn’t turn it off, but searching for “zif” with that filter on turns up nothing because the name of the symbol I need is DIP_Socket-28_W11.9_W12.7_W15.24_W17.78_W18.5_3M_228-1277-00-0602J which is missing the mm part after W15.24.
And I see now that, though ‘ZIF’ is in neither the name nor the description, it is in the Keywords field:
(As is 15.24mm as well, though of course that won’t match the footprint filter, which I presume matches on footprint name only.)
So the first lesson is I suppose always disable the symbol’s footprint filter if you’re having trouble finding what you need because the names are not perfectly consistent.
As for the name issue itself, should the ZIF sockets include mm after the widths, as regular packages do? Or is the footprint filter for the 2764 (and 27C64) symbol wrong, and it should not include the the mm? Or is this apparent inconsistency deliberate for reasons I’m not aware of?
IMO you should always have a specific, orderable MPN in mind when placing a footprint. Atomic libraries are the best way to avoid issues like yours, but not the way Kicad has chosen to structure its first-party libraries.
If you’re designing something to be manufactured, sure. But this is a one-off thing to fix an annoyance with a vintage computer I own. I could indeed order that exact part from Digikey for almost $30, but that would increase the cost of the board more than five-fold compared to just using one of the cheap Chinese TEXTool knock-offs kicking around in my parts bin. (And yes, it’s possible that this footprint won’t work with the cheap knock-off part, but I expect it will be just fine. And no, it’s not KiCad’s problem if that footprint doesn’t work, it’s mine; I’ll just have to get out the calipers and edit the footprint myself. Or spend $30.)
Ok, but what you’re proposing is a quick hack workaround - making this change wouldn’t have guaranteed you didn’t make this error, only properly verifying your footprints will do that.
I just grabbed a Textool zif socket from my components boxes: pins are 0.77mm x 0.32mm, so will fit a 1mm hole easily! (I bought these ZIP skts to be able to quickly change PIC chips for software testing… normally the chips just get soldered into the PCB, and mine didn’t fit the PCB, so I bodged it by soldering on some long pins that DID fit the PCB! This was a 1-off situation)
I made some PCBs using some PCB mounted RCA/phono sockets (which needed a custom footprint creating), first thing I did was buy some, so I could double check the dimensions! I often take a standard footprint and tweak hole sizes or pad sizes, to meet MY needs.
It is the job of the engineer to double-check all dimensions for a job, never assume, others make mistakes.
In which case I reckon approximately 100% of engineers do not “do their job.” When you built your board, did you manually measure every. single. component yourself and compare those measurements against the footprints before you sent your board to the fab? Or did you just pick the components that seemed most likely to have issues (such as your RCA jacks) and just measure those?
But this is getting well away from the point of this thread which, if you read my response analysing what went wrong, is this:
Is it correct and desired that, when you select a component using a DIP-24W socket, and look at the footprints that can be used with it, KiCad should by default not show the ZIF socket footprints that can be used with it? If so, why? (This is a serious question: I can imagine that there are reasonable reasons that this might not be fixed.)
Yes, you actually do that. Except your company likely maintains a database of verified parts (or pays for access to such a database), so you don’t have to do it every time.
EDIT: and no, you usually don’t physically measure components but rather consult the manufacturers mechanical drawing.
This is quite often not the task of an engineer, but it is quite common that larger companies have people whose job it is to maintain & extend the libraries that are used in PCB design, as halachal already mentioned, and the engineers only use verified parts that are in the database. If an engineer wants to use a new part, then it first has to go though the verification process. How formal and extensive this verification step is depends on the company, but it may very well extend to verifying dimensions on 3D models too.
In smaller companies the process is often less formal, but the complexity of the projects and the cost of mistakes are bigger drivers for deciding on the procedures. On a hobby level, something like the test fitting below is often sufficient. And I do this for all parts where there is a suspicion it’s not perfect.
Hole size errors are probably one of the most common mistakes, and many hobbyists will probably get bitten by that.
Not for “standard” 0603, 0402 type components, but for more complex packages yes I check and make my own if I’m not happy with the KiCad supplied match . . . some recent examples:
When you built your board, did you manually measure every. single. component yourself and compare those measurements against the footprints before you sent your board to the fab?
Very fair comment.
My first PCB was fairly simple (just looking at it now, from 2018!): it did use a relay that I needed to create a custom footprint for, but the pin-size was pretty normal, but I definitely double checked it all. I also had some ‘molex pins’, and it looks like I made the holes plenty big enough for them!
Having made that first board, I learned a lot: some hole sizes were rather bigger (eg on transistors) than needed, so they got reduced. The biggest thing I learned was that, for hand-soldering, you need slightly larger pads than for automated soldering, especially on things like the standard resistor and capacitor footprints.
I’m lucky in that, historically (in the early 80s) I was a hardware designer, and used to chat to the guy who laid out our PCBs (using tapes etc!), so I probably picked up a few useful tips along the way. I’m also old enough to have had other (non-PCB) things fail due to silly mistakes, so I’m definitely a believer in “measure twice, cut once”.
In which case I reckon approximately 100% of engineers do not “do their job.” When you built your board, did you manually measure every. single. component yourself and compare those measurements against the footprints before you sent your board to the fab?
Well, I do look up all components datasheets, dry test on laser cut stencils things I happen to have at hand, to verify assembly of other tings too like is the case in my way etc. I try to do this at least to the parts i must assemble myself. Its fairly commotion that whatever footprint i have don’t match what i need. I mean i don’t measure standard surface mount 0603, 0402, nor any trough hole resistors off course. But have tested the footprints before.
Sometimes i don’t test because there is no time, however i do note this in my notes. So i am fine with errors that come my way this way, or if i really must be sure. I send then measure and send again.
Name of the game, quite much, is avoiding stupid mistakes. But yes I am to blame for every and all mistakes, even if they are not something I could account for.
Note: I don’t think its out of the question to change the standard library footprints (I have corrected clearly wrong text). But you can do that in gitlab, open issue, then fork and ask for merge. You don’t need to have a conversation on this forum about it. Though in this case it still was useful to check your mistakes.
Yes, I absolutely do need to have a conversation about it, for at least two good reasons.
There are at least two obvious solutions to the problem I described above (change footprint names or change footprint filters), and possibly more. I can’t see which one would be better.
There may be further solutions, or reasons that neither of the solutions above should be implemented. I have little or no idea why the footprint filters are that way, nor why the ZIF names are that way; that indicates that I should be seeking to learn, not proposing arbitrary changes that are likely to waste the time of both me and the KiCad maintainers.
I notice that you have not made any attempt to address the problem that this thread is really about. I don’t know if that’s because you’re as ignorant as I am or whether you feel it’s just too obvious, but if it’s the latter, please provide an explanation of what’s going on with those footprint names and filters (even if it’s just, “Yeah, it’s something we did without too much thought at some point”) and what the correct solution to this is.
Yes but you should have this discussion with the library team. Discussing here just talking to users. If you want to do a change you need to open up a ticket in the library issues database.
I don’t think changing footprint names is feasible, because that would break it for all users who are currently using the library. Changing filters is pretty low hanging fruit that does not impact as much as changing names does.
Personally i don’t think the library needs to be changed, but it certainly can be. Just do it, the library team will then either consider it or shoot it down. Its not really using much of anybody’s time if you did all the work and wrote the explanation.