Library Concept


A sane library concept is the foundation of a sane EDA package.

From its very first day, LibrePCB has used a unique library concept. This concept is the main feature that sets it apart from other EDA packages.

Stable Cross-References

With LibrePCB, names are just a human-friendly reference. Whether it’s a library, component, pad, or net, renaming elements of your project is easy and hassle-free.

The tool uses stable, unique identifiers for all cross-references to make them reliable. References even work across libraries, so you can move components from one library into another without any consequences.

Multi-Footprint Packages

Most EDA tools do not distinguish between packages and footprints — they only recognize footprints, which doesn’t reflect the real world. LibrePCB’s library system respects that there may be multiple footprints for the same package. Check out this video to see how it works:

Norm-Aware Symbols

A similar problem exists with symbols. American symbols (IEEE norm) and European symbols (IEC norm) look different, but often represent the same component. This also applies to different representations for logic gate symbols, etc. This video explains how LibrePCB takes this into account:

Flexible Pin-to-Pad Assignments

Some EDA packages extract pin-to-pad assignments (pinouts) just by matching pin- and pad-names (e.g. connecting symbol pin 1 to footprint pad 1). However, this doesn’t reflect the real world and is thus very error-prone. Often there’s not even a clean way to create devices with an unusual pinout, such as a SOT-23 transistor with a reversed pinout.

LibrePCB solves this problem with an abstraction for component signals. One pinout exists between symbol pins and component signals, and another pinout exists between the component signals and the pads of each device (possibly different for specific devices).

These pinouts are all stored within the libraries. When adding a device to your board, you don’t need to worry about pinouts at all.

Categorization

Finding components by name or contained library is fine when you know exactly which component you’re looking for. Often, that’s not the case — sometimes you just want to browse through the components to discover what’s available, or maybe you just forgot the term "Zener" but you know you’re looking for a diode.

Such browsing is easy with LibrePCB since everything is organized into a multilevel category tree. Just click through the tree to see what components are there.

Add component dialog

One Bundle for Everything

LibrePCB does not use different library formats for different kinds of library elements. Instead, it is a generic bundle which can contain elements of any kind — for example symbols, footprints and components.

Thanks to this future-proof concept, libraries can easily be extended with new kinds of library elements (e.g. 3D models or SPICE models) whenever needed, without requiring you to learn something new.

Specifications

Interested in more details about the library structure? Check out its specifications!