Some library questions

Maybe you have misunderstood, or I have misunderstood your intention. KLC is a collections of conventions or rules for the official KiCad libraries which are distributed as part of KiCad. They don’t tell how things can be done or must be done for personal or other libraries. KiCad supports several workflows:

  1. Generic symbols or symbol libraries: symbols don’t have a default footprint attached.
  2. Fully specified: each symbol has one default footprint.
  3. Atomic: each symbol describes a part so that it’s distinct from all other parts except completely identical parts. Often this means that each symbol has a field for manufacturer, distributor or in-house part number so that when you create a BOM you will get a list of items to be ordered automatically.

You can mix these in libraries. One library file can have generic, fully specified and atomic symbols. An atomic library, for example, is a library with only atomic parts.

A hobbyist or an individual designer or a small company with small amount of designs probably wants fully defined libraries. Big companies may have in-house database for parts and want atomic libraries.

Also note that a KiCad symbol can have both one default footprint and a list of other fitting footprints (or a footprint name “filter”). Or it may have only a list of footprints but no default one.

This may still relevant: Kicad Librarian

Unclear how they are defined. Is that jut the matter how it is created.
For example for LM317.
On generic there are no footprint definition and any 3 or more pin footprint may be selected (even wrong one). Fully specified have selected footprint like TO220 and finally Atomic have footprint defined like LM317TO220. And lastly all of that can be overrided and selected (even wrong) footprint.

Loking docs and youtube I didn’t see any library import from Eagle function.

In that point I hate automatics.
I need to know if I can do like I do now. And this was:

I make project /home/kicadproj/test then I make the design here and that is last version. It goes into production. After some time some modification is needed. In that case I copy /home/kicadproj/test to /home/kicadproj/test/v1.0. Now I have original (v1.0) stored and I do improvements on /home/kicadproj/test. So all the time the /home/kicadproj/test is latest version but can have subfolders of older versions. Is that possible in KiCad?

And is it possible to have two boards in same folder. For example:
The design have one schematics and two pcb (one pcb is main pcb and other have just pushbuttons connected with wires as global nets)

Other example have two schematics and two pcb’b (for example main board on one pcb, and keyboard and display circuit on other connected with connectors without visible connection on pcb)

I generally use a slightly different put similar aproach for my projects .

I have a project folder and in it folders for every version of it. So test/v0/test.pro test/v1/test.pro, …

So yes what you plan to do should also work (i just dislike mixing leaves and notes in my directory tree so i introduce a node for the current project version as well.)
Some of my projects even had a mix of eagle and kicad projects in the same folder that way.

Important to note is that i do not rename any project files via this scheme. Current versions of kicad do not have a save as option which would mean renaming is a lot of manual work (including needing to change stuff inside the files). Version 6 will get a save as option making this a lot easier and fully doable from within kicad itself.

Make sure you read up what files you need to copy that way.


And i pair this with version control. This allows having in between states as well as the main produced versions.

Me too, I don’t like software trying to outsmart me.
A long time ago I used “Ultiboard”. That program did not allow duplicates of pin numbers in the schematic symbol editor.
That meant that if you made an error and had to swap two pin numbers you first had to renumber one of the pins to a non existing number, then renumber the other pin to the number that the first pin had, and finally fix the number of the first pin. That was pretty silly.

KiCad keeps it simple, and delegates responsibility to the user.
In the schematic the footprint link is just a string of text, that points to some Footprint in some library.

As far as I know it is difficult to assign a footprint to a symbol in Eagle, if that footprint is not in the same library. For example assume you find an LM317 in a SOT-223 package, and that SOT-223 package is not predefined in your LM317 symbol in Eagle. What then?

In KiCad, you won’t even notice the difference. Just get any SOT-223 package you like and use that for your LM317.

About revisions:
Each and every project that makes it to production has:

  1. A date on the schematic and PCB to identify that batch.
  2. A directory called “gerber” with the gerber files used for that batch.
  3. A text file with any details relevant to that project.
  4. The whole project gets zipped with: [projectname]_[date].zip
  5. It gets backed up to a safe location.

I always use ISO_8601 as date format. This circumvents all the silly date formats used around the world, and it also sorts in the right order in directory listings etc.

Also, the current project is in a directory with just the project name. If I want to compare with an older version, then I put that other version in a directory which also has the date attached in the directory name. After finishing comparing, I just delete the project with the date attached. This keeps the working directory clean, and prevents any possibility of contamination of the old project. If you later want to do some other comparison, you do that from a fresh copy of the backup.

So in this way I also use the date as a revision number. I find this much more convenient then sequential numbers as it places each revision firmly on a timeline.

I’ve also tried to use git. Git is a wonderful program, but I find it much more difficult to use then simple zip files.

1 Like

I did little test with this. I create test project and simple schematic/pcb. Then in file browser (not kicad) create test/v1 and copy content from test here. Then I do change in test. That scheme seems to work. As for next steep I try to make V2. So I do SaveAs from kicad to test/V2. Doesn’t work as kicad seems to enter some recursion loop and hangout.

At least in version I have there is no problem. The symbol is one thing and footprint is the other thing. So if you create just the schematics and need new symbol then just draw new symbol without footprint. But when you need to make board from schematic then in symbol you MUST declare the available footprints AND connect pins from symbol to pads on each footprint. And this is nice feature. For example if I have microprocessor with PLCC44 and TQFP48 case available, for schematic I have same symbol. But on pcb I can choose footprint and they are properly connected to symbol even if pinout is not same. So it’s possible to make pcb with wrong package but can’t make nonfunctional pcb. In kicad seems pretty easy to mess that as footprints aren’t restricted but just guided. In Eagle you can have one symbol for multiple footprints with correct wiring. On Kicad seems that if wirring is different you must create (same) component for each different footprint.

KiCad’s behavior will change depending on how you set up your libraries.
So keep track of whether you use absolute or relative paths.
KiCad uses $(KIPRJMOD) as an environment variable that points to the root of the current project.

1 Like

It’s unclear to me what you mean. KiCad doesn’t force any one library system, it lets you do what you want. There’s no option to select which would allow only some library layout and disallows others. Yes, it’s just a matter of how you create and use the libraries. The words generic, fully defined and atomic just describe certain ways to use KiCad libraries.

Yes, and how is that a problem? If you want only one footprint for one symbol, you prepopulate the footprint field in the symbol in a library. When you put that symbol to a schematic you can either leave the default footprint or change it. KiCad doesn’t force you to any one workflow. If you want to use fully defined libraries (one footprint per symbol), just create such libraries and use them and don’t change the footprints in the schematic.

You can do so many things wrongly at PCB that this one looks for me not important. What is the chance to select for LM317 some 6 pin footprint and not notice it?
My way is to never, ever change footprint assigned in library.

I was working the same way in Protel. But as I was not sure if I (or KiCad) will (may be) use anywhere in the directory paths relative to current I decided that all my projects will be at the same level in directory to be sure that “two levels up and then to library” will always mean the same. I suppose I never use it but at least ‘I am immune to such a problem’.
So now I just under ProjectName made the subdirectory called ‘A’, then ‘B’ and so on.
But I think it is possible to do like you.

In V5 I think it is not possible. Some KiCad generated files have universal names so two projects in one directory would overwrite them for each-other. These are files I just delete, but I can do it (I think) based on my assumption that once defined element in library will be not changed so any old project would not need to read the element from those rescue files instead of library.
In V6 I don’t know. I have read that those ‘rescue’ data will be in schematic file and not in separate file.
At least in V5 you should think: “KiCad project is one PCB project.” If your project have many PCBs than your project contains many KiCad projects.

My schematics are always one sheet only. So if I copy the KiCad project to new name in new directory I copy exactly 3 files. FreeCommander I am using allows to rename them all while copying so it is really one operation for me to have new project from old one. I don’t know if multi sheet schematic generates any problems (but I have read that ‘yes it generates’). If you plan to use multi sheet and wont to do copy that way you should check it.

I’ve never seen Eagle.
What with pin numbers at schematic? They are automatically adopted to footprint. Pin numbers at schematic are helpful when you search a right pin to touch with scope probe.

To mimic fully defined component in eagle you need to create symbol and in symbol editor you select footprint and make connection betwen symbol pin and footprint pad. You can take more footprints for same symbol but for each you need to make connections. In eagle symbol pin usually have names, and footprint have pad numbers.
So LM7805 symbol had IN, OUT and GND pins. And for example for TO220 you need to say IN=1, OUT=3, GND=2, and for DPACK IN=1, OUT=3 and GND=4
In that way you cannot place wrong connected footprint, but can select footprint you don’t want here. (SMD instead THT or similar) But that’s my problem as that wont be changed because I like ti that way. At least for now I just discovery how things works.

Aprox of 50% designs I have on one sheet other multiple sheet. I draw all my symbols to be condensed as much as possible to avoid multiple sheet schematic as possible. At kicad the symbols are usually huge especially controllers as they have defined all subfunctions of pins. I have shortened that to just main function.
There may be one nice feature that I didn’t see anywhere. To have symbol pin name as compact as possible but when selected with mouse to show additional pin information.

Is it possible to toggle Active checkbuton in manage simbol/footprint library for all items selected or at least all of them? Usually I will work only with my library but when I create new components i will look in all of them. I can’t figure how to toggle more than one item. (there are over 100 libs so to togle them I need 100 clicks)

I kind of fail to see how eagles library system should be saver. After all does it matter if you have a separate entity where you define the connection vs doing it in the symbol itself?
It is just different requiring a different workflow. But well that is to be expected when switching tools.

In this case the main difference is that the connection is just tied to the symbol instead of having a separate system to define them. Yes eagles way has its benefits in this regard as it is possibly easier to change to a different package with more tool support.
But the equivalent can be done in KiCad by just placing the symbol representing the other package.


Also please keep the discussion to one topic. It is really hard to follow already.

I would really hate that.
So you have names for the schematic, pin numbers for the Footprint, and then an extra table to connect those two. To me that is just an extra place where errors can be made. I also very much prefer to have the pin numbers on the schematic for one-off projects which I hand solder on Matrix board.

In KiCad to add support for a different footprint, you first make a copy of an existing schematic symbol, and then edit the pintable (see screenshot below) for the pin numbers of the other Footprint.

I used to do that too but it takes a lot of time and it has no real benefit, and on top of that it makes the schematic less readable. Once you’ve gotten used tho the Hierarchical sheet system you can simply dedicate a page to for example the power supply section, which gives you plenty of room for a logical layout, and when the power supply section is removed from the main sheet, you have also more room there. It’s nice to have some reasonable sized schematic symbols that do not waste much space, but optimizing for the smallest possible schematic area is an optimization in the wrong direction.

Going from the schematic to the symbol editor is very quick and easy in KiCad. Just hover over any schematic symbol, and pres [Ctrl + e] to open it in the Symbol editor.
In the schematic symbol editor you can view all info of all pins in the pin table, accessible with:
Symbol Editor / Edit / Pin Table

It’s always tempting to prefer the thing you’re used to above another that is new to you and therefore probably feels weird in the beginning.
This thread also seems to go in the direction of pointing out all sorts of differences between eagle and KiCad. Just give KiCad some time to get used to, and you’ll probably find that it has a quite nice feature set and works well.

Wait a second. Pin numbers in the symbol should always follow the datasheet of the component because the pin number is tied to function. If the pin number / pad number connection needs editing, the footprint pad numbers should be edited. Only if the symbol pin numbers don’t correspond with the datasheet they should be changed.

Sometimes it’s of course possible that different package versions of the component may have different pin numbers.

1 Like

I believe there is a misunderstanding.
Probably because I used “footprint” and “schematic symbol” in the same sentence.

So again:
Lets for a moment assume that KiCad’s default libraries only have an ATMEGA328 in skinny DIP-28, but you want to use an ATMEGA328 in TQFP-32.
In this case you make a copy of the ATMEGA328_DIP and name it ATMEGA328_TQFP, then open it in the schematic SYMBOL editor, change the pin numbers of the schematic symbol and update the footprint link.

1 Like

And for that particular case you will also need to add the missing pins as one of the components has more of them. (KiCad has no way to assign multiple pads to a single pin)