How to organize a couple of boards

Currently I try to organize a couple of boards in a hierarchy. That’s surprisingly difficult. What I have:

  • 6 boards which are loosely related, along with their schematics. More boards are expected. They’re already done with a different EDA application and I found a way to convert at least the schematics.

  • A symbol library and a footprint library, both in a separate folder, one file for each symbol and one file per footprint. All in the old format so far, but the conversion (upconvert) finds them and a reasonably complete schematics with all required symbols appears.

What I want:

  • Keep each board reasonably separate, so files aren’t confused.

  • Keep a common library of symbols and footprints for re-using them across boards. Parts which are tested and found to be usable, also custom parts.

  • Benefit from the symbols and footprints coming with KiCad. In some cases this would mean to edit and copy them to the common library.

  • Avoid to have more than one copy of each common symbol and footprint to avoid synchonisation issues. Sometimes they’ll need edits and doing the same edit in, say, 50 copies of a library is ineffective and error prone.

Apparently there is no application to edit single symbols or libraries. So I tried to edit a schematics directly with eeschema (without ‘kicad’). I can create local libraries and copy symbols between them, but have apparently no access to system wide symbols.

If I create a project in a folder dedicated to one of the boards, I have access to system wide stuff, but no longer to the common symbols library. ‘kicad’ refuses to accept paths starting with …/, even when writing such paths into the project file with a text editor.

If I create a project in the top folder I still have access to system wide symbols and then also to the common library, but also all six schematics and layouts and all other files laying around there as part of the project. A pretty big mess already, not really thinkable to use the same strategy for, say, 50 distinct boards.

I found out on how to copy a symbol from one library to another, but doing so copies not the one edited symbol over, but all of them.

So far I couldn’t find a way to remove a symbol from a library, except by doing this in a generic text editor.

All this is pretty confusing. I can’t imagine that companies having a few hundred distinct boards have all of them in the same folder or keep a separate symbol library for each component of each board. Sometimes symbols and footprints need finetuning, after all, and repeating this a hundred times isn’t exactly effective.

So, what are the best practices to organize for more than one board?

Thanks, @Andy_P, now I know how it should work.

For starters, the hardcoded paths on Linux are /usr/share/kicad/library, /usr/share/kicad/templates and /usr/local/share; neither of them is user writeable.

Not much of a problem, one can specify arbitrary additional search paths. However, for some reason I yet have to find, all the system provided libraries vanished in this specific project:

As one can see, only the .lib in the custom search path and the automatically generated one are left. A -cache.lib exists, too, but isn’t shown either. No error messages anywhere, not even on the command line.

I tried with a new, blank project already, there it works, all system libraries available. Even with a custom path. Will continue to search what makes the difference.

I think I’ve got it. The story goes as following:

The libraries taken into account aren’t stored in the schematics file, but in the project file. If one opens a schematics without having a project file, a project file is created without asking. Simply deleting the project file (kind of) recovered the project shown above.

Another thing is that libraries taken into account arent’s all available ones, but only a selection. Such an automatically created project file lists 29 libraries. Entering the library search path dialog and manually adding all available libraries, also those in the system provided folders, ends up with 86 libraries. So one has not only to add a search path, but also each library inside this search path.

Not sure wether it’s wise to provide only a small portion of all available symbols by default without leaving a hint on the remaining ones, but that’s the way it’s implemented. I’d be fine with always listing all libraries, at least in the library selection dialog.