-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Diode Outline packages #100
Conversation
@ubruhin Maybe you can answer the question:
|
Awesome, thanks for the contribution @ii8! 🎉 I'll try to review the PR in detail soon.
Sounds good to me - since the 3D models will be different, it makes sense to create separate packages 👍 |
3c329de
to
1d9b1f4
Compare
Finally I reviewed this PR, sorry for the long delay. This is really fantastic work @ii8! The packages are conforming to our library conventions, their dimensions are correct and they look nice 👍 The only thing which doesn't follow IPC-7351 is the naming. The suggested naming pattern is: But unfortunately I'm confused about whether the nominal or the maximum height should be specified. These IPC diode package names seem to be used very rarely, I've found almost no references in the Internet. And the few references I've found are sometimes specifying the nominal total height, sometimes the nominal body height, and sometimes the maximum height 😭 With nominal body height:
With nominal total height:
With maximum height:
I'm really not sure how we should name them. If we're not sure which is correct, maybe the best is to keep the current naming. Any opinions welcome (cc @dbrgn), otherwise I'd merge this with the current naming. |
Following standards is nice, but from a practical perspective I think these packages will be much easier to find if they have the names that are commonly used for them. I actually duplicated SOT23-5/6 in my local library because in the base library I found the SOT23-3 but didn't notice the 5 and 6 pin packages because their names are completely different. |
Yeah I totally agree the naming is a mess, and IPC7351 is somehow annoying as it is not free, it sometimes completely reverts recommendations made in previous revisions, and the de-facto standard IPC7351C has never been released and we don't know if it will ever be. But unfortunately there's no other/better/free standard. Also the commonly used names (like DO-214) are a mess as they are sometimes used wrongly by manufacturers, they appear in different standards with different dimensions, or manufacturer give them their own name although they are defined in a standard. So these names sometimes cause troubles and confusion as well. The IPC naming at least has the advantage that it is expressive and consistent, while something like DO-214 is not expressive nor consistent at all. For example from the name DIOM5436X215 you know (with some experience) it is a molded polarized diode with dimension 5.4x3.6x2.15mm. Same applies to all the other IPC namings. But as I wrote above, in this case I'd be fine with keeping the current naming as it's not clear what the correct IPC names would be 😭 |
Well, but that's the case for all land pattern names, right? Intuitively, I'd use the nominal height. How do we handle it in other packages that we generate? For DFN, we use the nominal height: librepcb-parts-generator/generate_dfn.py Line 85 in 3e792ac
However, we don't have a max height in that file. For QFP we use nominal as well, even though the max height is available: librepcb-parts-generator/generate_qfp.py Line 110 in 3e792ac
I'd go with IPC names, due to the reasons you listed ("The IPC naming at least has the advantage that it is expressive and consistent"). If we wanted to list alternative names in packages as well, we could extend the library format for a dedicated field (or put them in the keywords and/or description). Ah, and regarding body height vs total height: I think it's pretty clear that "Body Width X Height" means "Body Width X Body Height". |
Alright, thanks for that clear opinion - so let's do it this way 🙂
I'd go with nominal height as well, but not all standards define that value. For example JEDEC MO-152C only specifies the maximum height for SSOP, and that's the value our generator uses for the name.
Here I disagree 🙈 I think the total height is much more important than the body height while the space between PCB and package body is not relevant for mechanical aspects of a PCB. At least some of our generators are using the total height as well. But in the end the difference is <0.3mm anyway so probably not worth to think too much about that... So my suggestion would be to use the nominal total height, i.e.:
For this reason, the name "DO-214x" (and ideally also "DO214x") should be added to the keywords to make the corresponding package showing up when searching for DO-214. Also I'd put the DO-214x into the description. @ii8 Sorry about the inconveniences due to this discussion. Would you be willing to implement the new naming? Otherwise I could take over this task, just let me know. |
Ah, I always assumed that for SMD parts the body is directly on top of the PCB, so body height and total height should be the same. But that probably depends on the actual part. |
I can change the names but I have some questions.
You are using the total length here instead of the body length like the standard says, is that intentional? |
Basically it's because I've found a few other references in the internet to these package names when using the total length, but none when using the body length. The total length is also more relevant for us and IMHO the standard is not clear enough about the term "body length". I mean, for a package like LQFP it's clear that only the mold is the body, but for a J-Lead package there's no space between leads and body so one could consider it as just a single body. But that's just my opinion 😉 The references I've found in the Internet:
I would understand if you prefer using the body length (without leads) but then I'd ask for @dbrgn's opinion as well 🙈
This is documented here:
|
I don't get it at all. and Or is that not right? But it doesn't matter I'll just name them the way you wrote them. I'm guessing this function isn't quite right though. It rounds instead of truncating and it ignores it's second argument: |
Ah sorry I missed to copy the third line:
But here again the standard is not 100% clear IMO. Does "Body Sizes" include the height? What is meant which "chip component"? Does it apply to J-Lead bodies? I have no idea...
Arghh 😭 But again one more question arises, does IPC tell something about rounding vs. truncating? I am not aware of that... I'd find rounding more reasonable but in the DIOM* references I've found they all just truncated the decimals. At least LibrePCB does not rely on names so no matter how we name them now, if we know better some day in future we can just rename them without any consequences 😉 By mentioning the JEDEC names in the description it is clear anyway what packages they represent. |
No problem I saw that line in the document you linked, but I thought it wasn't relevant to these packages because it says "chip component" like you mention. Even if it is, I don't know what it means anyway. What is "one place to each side of the decimal point" trying to describe? Does it mean I pushed code btw, not sure if you noticed. |
Some background information on IPC can be found here: https://www.pcblibraries.com/forum/ipc7351c-draft-or-release-date_topic1818_page1.html (3 pages) In the end the standard is unclear in a lot of cases. That leads to naming inconsistencies between vendors. I don't think LibrePCB must match the names of other vendors exactly. We just need a consistent system that we can follow. The name is just a bit of help to find the correct part, it's not its specification, so minor deviations are fine. If we wanted some external knowledge about the naming, we could open a thread in the pcblibraries.com forum. Tom put a lot of time and effort into these draft documents, and he usually has good ideas on how to handle these cases. (This gets a bit offtopic, but maybe we should "fork" the IPC6351C naming schema (which at the moment is essentially just the "PCB Footprint Expert naming schema") and make our own, with improved specs and guidelines on how to name things.) |
I saw that the change in By the way, I have now realized that pcblibraries.com provides a much more complete naming convention: In this convention, the DIOM pattern looks much more consistent and clear than in the IPC7351B pattern: I also installed their Footprint Expert software now and entered the values for DO-214AA. This generates the name DIOM540X360X265L115X208. However, I'm fine with keeping the IPC7351B names we already agreed on. We can still update them some time later once we decide to follow the Footprint Expert conventions for all our packages.
Maybe this would indeed make sense. It really is a mess to not have a clear, open, consistent convention for our packages... But yes that's offtopic here. My suggestion: Let's get #107 merged, then rebase and merge this PR so we can finally finish this topic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a better way to have various versions of placement and docu layers for the same package? I've just made separate packages here for unidirectional and bidirectional diodes but I wonder if there is a better/preferred way.