I come from Eagle. What should i know about KiCad?

Official Documentation

The getting started tutorial of the KiCad doc team is actually a tutorial that assumes you know the general process already (Ideal for users coming from a different tool). Getting Started in KiCad

However, be aware that it is sadly out of date in some places but you will for sure be able to still find your way around KiCad as the changes are not that huge (the tutorial got updated where the differences were large enough to matter but some minor differences might still be there).

Library Management

One of the larger differences between KiCad and eagle is library management. KiCad splits the lib assets completely which allows a more flexible workflow What is the difference between footprints and symbols?.

Plus there is no special directory which means you need to add a pointer to every lib file to so-called library tables (you will only notice that when adding already existing libs, creating new libs does this adding stuff automatically).

For more details read Library management in KiCad version 5 as well as How to get a downloaded symbol, footprint or full library into KiCad version 5?

Making Library Assets

The library asset creation tutorials linked below are of use even to users who already know the general process as they focus heavily on how to use different KiCad tools to be efficient with this process. (They also give some general guidelines but you can ignore these sections if you already know this part)

Project Local and Global (Central) Libraries

Also notice that KiCad allows having project local or global (central) libraries. There are pros and cons to both workflows as they influence how collaboration and sharing works for a resulting project: Project and libary setup for sharing and collaboration (KiCad version 5)

Connecting Symbols to Footprints in the Library

Some tutorials out there sadly also do not give full details on how some processes work. An important example is that quite a lot of tutorials seem to suggest that one can not create a library where symbols are connected to their correct footprints. This is wrong! One can connect a symbol to its footprint already in the library. This is actually how 90% of the official library is build.

It is however also possible not to make this connection in the library allowing a more flexible workflow. (I would argue the flexible workflow is the additional feature not found in other tools and the fully specified one is the norm.)

For all options on how to connect a symbol to a footprint see How can i assign a footprint to a symbol?

The definition used in the official lib is found here in this rule https://www.kicad.org/libraries/klc/G2.1/

The Official Library has Consistent Rules

If you want to use the official library assets then you will be happy about the fact that the library team of KiCad publishes their rule set. (This was one of the things i was missing from eagle but to be honest their lib did not really look like there is a rule in place at all)
KiCad Library Convention (KLC)

Danger: Schematics do not Embed Symbols in KiCad 5 and earlier

At this point in time KiCad does not include symbol info in the schematic file format. This will be fixed with version 6 but until then you need to be aware of the cache/rescue process. (Footprints are already included in the layout files so these do not suffer from that problem) What are the cache and rescue libs and how does the schematic rescue dialog work? (KiCad version 5.x and earlier)
KiCad version 6 will solve this issue.

Multi Page Schematics

KiCad is designed with a hierarchical workflow in mind. Flat designs like mostly used in eagle are possible but are not the natural way to use KiCad (you need to fall back on a workaround for this workflow): Hierarchical or flat schematic design, what is best for me? (How to deal with multi page schematics?)

User interface specialities

KiCad differentiates between the concepts of drag and move

In eagle especially in the schematic there is only the move command. This command drags the connected wires with the symbol to be moved.

KiCad behaves like this if you chose the drag command. The move command disconnects the symbol and therefore allows to move only the symbol alone.

Dragging of footprints in pcbnew with tracks attached is not supported in version 5 but it will come in version 6. With the same difference between drag and move as for symbols.

Warp on zoom

KiCad by default centers the view around the cursor position when zooming. Some users find this disorientating which is why it can be turned off in the preferences dialog.

Are there things that KiCad can not do?

Yes there are some things that are possible in Eagle but not in KiCad. So for some usecases you might be better off staying at Eagle (for now).

KiCad Version 5 does not support curved traces

Curved traces are needed for flexible boards and for very high frequency boards, but are sadly not directly supported in KiCad.

There is the option to use complex pads in a footprint or use the RF tools extension Rounded Tracks Reloaded ... again: RF Tools for KiCad

KiCad version 5 does not support hatched fills

Hatched fills are again a feature required for flexible boards as well as for some sensors. Sadly KiCad version 5 does not support them, they will be introduced with version 6 (they are already in the development snapshots).
There are a few workarounds available but i think you might be better served either staying at eagle or using the development snapshots of KiCad. For workarounds see for example discussion here Copper pour with Hatched fill instead of solid fill

Footprint Generators are Less Powerful in KiCad

Eagle comes with quite a number of inbuild footprint generators. KiCads equivalent pales in comparison. There are however external scripts that do the same. For standard IC packages take a look at https://gitlab.com/kicad/libraries/kicad-footprint-generator/-/tree/master/scripts/Packages

Text inside of copper planes is different

Eagle makes a closely fitted cutout around text placed inside a copper zone while KiCad cuts out a bounding rectangle and places the text inside that. There also is no option to have a negative of the text inside a copper zone (so copper removed only where the letters are)

8 Likes

Labels and net names.

In KiCad, a label is a schematic symbol on itself. There are 3 kinds of labels.

  • Local label.
  • Global label.
  • Hierarchical label.

A local label is shown as a text string that defines the name of a net and does not have additional graphics. The label is attached to a wire as soon as its attachment point (small square, by default in it’s lower left corner) is put on a wire. In that case the small square disappears.

This label is not connected to a wire, because the square in it’s lower left corner is visible:
image

This label is connected to a wire. Both the squares from the “open wire end” and from the label itself have disappeared.
image

A label can be put anywhere on the wire. In the case below the label is attached to the wire, but the square of the open wire end remains and this is harmless.
image

In KiCad it is perfectly legal to have multiple labels with different names in a single net. When two labels are put on a single wire, the nets get merged silently and KiCad just picks one of the label names as the net name. There are no nag screens to ask for confirmation.
image
When labels of different types are connected with a wire, they also get merged into a single net.

Each net that does not have a manually placed label, gets an auto generated net name. These names are considered unimportant in KiCad. They do not show up on the schematic in KiCad V5.1.x, and they are not shown in the drop down box while selecting preexisting names for labels.
image

In KiCad-nightly V5.99 these net names are shown in the status area at the bottom of the screen when a wire is selected:
image

KiCad V6 has error checking for net labels in ERC. This behavior can be set to your own preferences in: Schematic Editor / File / Schematic Setup / Electrical Rules / Violation severity, and you can suppress individual errors or warnings.