# How to easily find or create parts for Eagle schematic/board layout

For Eagle CAD software, during schematic or board layout, how can I search for parts/footprints already created by other people out there, to make my life easier? And if I'm still unable to find what I want, how can I create my own parts?

(Note: This question is intended as a reference for future readers, hence I am both asking the question as well as providing my own answer below based on the things I know. Perhaps others can chime in as well.)

For any serious work, you won't want to get parts made by someone else because they won't adhere to your conventions. I always make my own parts, which is really not that difficult.

I have certain requirements for parts, like attributes for automatic BOM generation, and text at particular sizes and and layers for the silkscreen, the assembly drawing, etc. Others aren't likely to make parts just the way I want them, and to inspect and vet someone else's parts would take at least as long as just making my own in the first place. When you do this for business and your reputation depends on it, you have to be picky.

However, hobbyists can be more lax. Others are welcome to use my parts and a bunch of other Eagle-related utilities I have developed over the years. Go to my downloads page and install the Eagle Tools release. This contains a bunch of libraries with parts, but also various ULPs, scripts, and host programs I use around Eagle. For example, there is a whole system for genering the BOM from the schematic and board, and then creating the labels for the kit. Start with the CSV_BOM documentation file in the DOC directory and follow the cookie crumbs.

To give you some idea of how the BOM generation system works, here is most of the EAGLE_ATTR documentation file:

This document describes the Embed Inc conventions for using optional
attributes in Eagle, which were first made available in version 5.  In
previous versions a part could only have a few fixed attributes built into
Eagle, such as VALUE and NAME.  In version 5 these fixed attributes still
exist but arbitrary additional attributes can be created by the user.

This document specifies certain attributes that are expected by parts of
the Embed Inc system, mostly to aid in automatic bill of materials (BOM)
generation.  The process of generating a BOM from a eagle board or
schematic is desribed in the CSV_BOM program documentation file.

The Eagle optional attributes that have special meaning within the Embed Inc
system are:

MANUF

Manufacturer:partnum; manufacturer:partnum; ...

The PARTNUM fields and their leading colons may be omitted, but is a
bad idea unless only a single manufacturer is listed.

PARTNUM

Generic part number or part number within single manufacturer.

SUPPLIER

Supplier:partnum; supplier:partnum; ...

The PARTNUM fields and their leading colons may be omitted, but is a
bad idea unless only a single supplier is listed.

BOM

Whether this part should be included on the BOM.  Some "parts" are
only features on the board, like pogo pin pads for example.  These
should not be listed on the BOM because they do not need to be bought
and will not be installed.  Supported values are:

YES  -  Include this part in the BOM.  This is the default if the
part has a package.

NO  -  Do not include this part in the BOM.  This is the default if
the part does not have a package.

VALSTAT

Indicates how the VALUE attribute is used.  The choices are:

VAL  -  Normal part value, like the resistance of a resistor.  The
part value will be listed on the BOM and used to distinguish
different parts.  For example, a 10K ohm resistor is a different
part than a 330 ohm resistor.

PARTNUM  -  The part number.  The value field will be shown in the
BOM and used to distinguish different parts, like VAL.  However,
the part number field will be set to VALUE unless the part number
is otherwise explicitly set.  VALSTAT PARTNUM is for generic
library devices where the value field is used to show some or all
of the part number on the schematic.  For example, the library
might contain a generic 14 pin opamp device, and the value set to
LM324 to show the type of opamp on the schematic.  In this
example, VALUE is only set to the generic part number without
package type, temperature grade, etc.  In this case the PARTNUM
attribute should be used to specify the exact part number, but
VALSTAT should still be set to PARTNUM.

LABEL  -  Label intended for the silkscreen.  The value field will
not be transferred to the BOM and will not be used to
differentiate parts.  This might be used, for example, to label a
LED on the board.  Different LEDs might be labeled "Power" and
"Error", but they are the same physical part and should be listed
on the same BOM entry.

SUBST

Sets the substutions allowed field for the part on the BOM.  Valid
values are "YES" and "NO".  The default is YES if SUBST does not exist
or is empty.

DESC

Explicit description string for the BOM.  By default, the BOM
description is derived from the library name and the device name
within that library.  If the DESC attribute is present and not empty,
its contents will override that default.

DVAL

Detailed part value.  If present and not empty, this field overrides
the part value string on the BOM and will be used to differentiate
parts.  DVAL is always assumed to be the true part value, so is not
effected by VALSTAT.  The purpose of DVAL is to provide more
information than reasonable to show on the schematic.  Generally the
standard VALUE attribute will be shown on the schematic with DVAL
shown on the BOM.


(1) Finding existing Eagle parts already created by other people out there: I recommend the following four sources ( aside from Googling "partname Eagle" ;-) ):

A WORD OF CAUTION (courtesy of user @Grant)... When using others' libraries or parts, first compare it to the datasheet, and/or print it out on paper for comparison to actual part. There are some untested and/or incorrectly dimensions footprints out there.

(2) Creating your own parts: It is not that hard at all to make Eagle parts for most things; frankly, if you are able to construct a schematic and a layout, making parts yourself will be hardly a step beyond. I have four pointers:

• For learning part creation, I suggest you start with these three tutorials; the creator spent the effort to make them very beginner-friendly: Tutorial #12, Tutorial #13, and Tutorial #14 on this Eagle tutorial-page.
• Start learning with simple examples such as a resistor, a DIP part, or even an SOIC-8 part to understand how it works; the clarity of understanding will then readily carry over to more complex parts.
• If the part has a footprint that is a common one (such as SOIC-8), just copy an existing part's footprint.
• Follow the manufacturer-recommended layout: Nearly all parts' datasheets prescribe dimensions for a recommended footprints/layout for the part; if you follow those precisely, life will be easier and you'll have a part ready in no time.
• One thing I'll warn about using random people's eagle libraries - be sure to compare it to the datasheet, or print it out on paper and compare to the actual part before you get your board made. There are some out there that haven't been tested on an actual PCB and have incorrect footprints or don't have the correct clearances marked. – Grant Aug 27 '12 at 12:58
• @Grant: Your pointer has been added to the answer above. – boardbite Aug 27 '12 at 13:29
• @boardbite It looks like eSawDust.com is no more. That's unfortunate, because it worked really well for me. – Nick Alexeev Aug 29 '14 at 21:52

I built a crawler to help with this problem. I totally agree you shouldn't use parts found on the public internet without careful inspection, but I find it saves time to start with something that someone else has built, and I often find they are more meticulous than I am so I have a better starting point.

You can search for and download parts that my crawler has found here:

http://www.schematicpal.com

No charge, just give feedback at the feedback link if you have any problems.

-Jim

(this isn't necessarily an answer but it's too big for a comment, IMO)

When I first started using Eagle, I quickly came to the conclusion that the libraries are old and not reliable. I took a good chunk of time and revamped a lot of what I cared about most.. which is basic resistors and capacitors. Creating the parts is easy... most of the work you need to do is in creating accurate packages and attributing parts properly. Here is my secret weapon, though:

Mentor Graphic's LP Wizard

This bad boy has saved me so much damn time drawing accurate packages for basic SMD footprints. Here's the skinny on why I love this tool so much:

The footprints it gives you are based on IPC-7351 or the appropriate JEDEC standard

While going with a manufacturer's recommended SMD land pattern is usually preferable in my eyes, for things like passive SMDs, this is great because it's a source of truth. If I want to create packages for 0402 through 1206, and I use this tool for all the dimensions, I know I'm going to have consistent scaling of things like pad spacing, courtyards, etc. One part won't have drastically different features and come out looking weird on the actual board. Anyone who has ever taken a look at the stock Eagle libraries can attest that there isn't much consistency. Using the tool, which in turn is based on these standards, is a great way to build a standardized library of parts.

For basic footprints, you get different sizing versions to tweak for space/reliability

I believe this is inherent to the standard, but for basic passive SMD footprints like your 0402, 0603, 0805, etc, LP Wizard will give you the option to switch between Least, Nominal and Most versions. These tweak the actual pad sizing to yield you a smaller package or a bigger package. A bigger package might be preferable to ensure bigger solder fillets for increased reliability while smaller pads might be better for creating a super dense board. Either way, these are footprints that have been tested and agreed upon to serve well in their intended application. To me, that's a big time saver and awesome.