--- In kicad-users@yahoogroups.com, Philip Pemberton <ygro...@...> wrote:
>
> Hi guys,
>    I'm toying with the idea of building a completely new set of 
> libraries for Kicad (and possibly EAGLE as well). This all stems from 
> the fact that no CAD package I've used thus far has had what I'd call a 
> "decent" set of libraries, and IMHO it's gotten to the point where 
> something really needs to be done...
> 
>    As I see it there are a few problems in common with most CAD libraries:
>    - Bad design. Pads with impossible annular ring sizes, stupid drill 
> sizes, SMD pads that are barely larger than the pad on the component 
> itself (and thus utterly impossible, or at least very difficult to 
> hand-solder).
>    - Things not meeting PCB manufacturers' requirements. Differing ideas 
> on whether the drillsize in the NC file is the final size after THP or 
> the pre-THP size, design rules for pads and so on.
>    - Silkscreen on top of pads. I mean, seriously. Scraping silkscreen 
> off PCB pads is NOT fun, and soldering to a silkscreen-coated pad is 
> close to impossible. The EAGLE libraries (even the Cadsoft-created ones) 
> are especially guilty of this, but most CAD vendors appear to have done 
> it at some point.
> 
>    What I was thinking about doing is writing a small-ish program that 
> took a list of components to generate, like this:
> 
> -----
> 
> $DefaultUnit Inches;
> 
> // axial through-hole components (resistors, RF chokes)
> AXIAL0.6     AxialThruHole(0.6)   // 0.6in spacing
> AXIAL0.8     AxialThruHole(0.8)   // 0.8in spacing
> 
> // radial electrolytic, 0.2in pin spacing, 7.5mm diameter
> C-ELEC-R-0.2-5   CapElectRadial(0.2, 7.5mm)
> 
> // very fat-pinned electrolytic
> $PinDrill 1.2mm
> C-ELEC-FAT-R-0.2-5   CapElectRadial(0.2, 7.5mm)
> // revert to default drill radius
> $PinDrill 0.8mm
> 
> // DIP, 100mil pin spacing 300mil between rows, 8 pins
> DIP8  DualInLine(0.1, 0.3, 8)
> 
> ------
> 
> ... and use a set of templates for each component type to generate the 
> component footprints. You still have to build the schematic symbols 
> manually (it's hard for a computer to figure out where best to put the 
> pins, unless they're just laid out in a grid on a rectangular outline) 
> but the footprints are generated by computer, and thus the pin numbers, 
> silkscreen and pad sizes/types can conform to IPC, ANSI, IEC or whatever 
> standard or house style you like.
> 
> Bonus: if you're having your board made by a manufacturer who insists 
> that the drillsize be the "pre-plating" size, or if they place 
> restrictions on the drills you can use, then you can change the drill 
> sizes in the script, regenerate the libraries and go from there. All 
> without having to edit dozens of component footprints to meet your PCB 
> maker's requirements. As long as you don't change the pin counts or 
> numbering order (i.e. turn a component called DIP8 into a quad 
> flatpack), you can carry on using the existing schematic libraries.
> 
> What I'm ultimately thinking of is a "basic" component library that 
> covers 80% of use cases -- you're still going to have to tell Kicad what 
> the PIC12F508 looks like on the schematic, but at least you can use the 
> footprint generator to make the DIP8 package for it.
> 
> Another bonus would be that if you change CAD packages, and your CAD 
> package has some form of text-import feature (like EAGLE's Script 
> Import), you can effectively take your libraries with you.
> 
> Does anyone think this sounds like a good idea, or am I wasting my time?

Phil:

I think your idea is a good one.  Not locking it down to a
particular electronic CAD package is also a pretty good idea.

Greg's proposal of using XML is pretty good as well.  At least
with XML, nobody argues about syntax issues anymore.  In addition,
this means additional information can be added.  For example,
some parts can be ordered from multiple vendors with different
part numbers.  With XML, adding a new tag does not break
programs that are reading the file.

The concept of having a package is good one.  Many parts
come in a multitude of packages.  It would be nice to
specify the part once and select the package separately.
Pin bindings sometimes vary between parts.

More control over drill selection is a good idea.  Some vendors
use metric, others use imperial.  Some have a set of "free"
drills and charge extra for other sizes.  Just being able to
specify the minimum and maximum hole size for for each component
lead would be a huge advance.

As an example of something that can be done after the
basic infrastructure is in place, I've always wanted to do
a screen scraper for part pricing when I'm ordering parts.
I typically order from DigiKey, Jameco and Mouser, being
able to figure out which vendor has the lowest price, can
save some serious money.  (Note, this would be a separate
program that read the library file formats, fetched the
prices from the vendors and squirted current pricing
information into the files as addition tags.)

My $.02,

-Wayne


Reply via email to