Some library questions

Just found this:
https://kicad.org/libraries/klc/S2.3/ And this is really drawback.

In KiCad, those would just be 2 separate schematic symbols.
Pin numbering between a PLCC44 and TQFP48 is very likely to be different, and they also have different part numbers for ordering. the housing is usually a suffix added to the generic part number.
You can see examples of this in the schematic symbols for the atmega328.
Press “a” when Eeschema is active, and type: “atmega328”, and you will see:


Then you can select the right symbol for your purposes.

It is not as bad as suggested in:

You do not have to completely redraw the second schematic symbol from scratch.
You just draw the first one, save it in a library, then make a copy of it and modify it with the parameters of the other variant.

On itself it may seem primitive at first, but it is simple and it works quite good together with the regular expression like search bar, and instant update of the preview windows while selecting symbols.

I have learned long ago to not ever fall in that trap again.
It’s one of the reasons I use Open Source software exclusively.

But I find it hard to believe that you would not be able to get a more recent version of Eagle somewhere, which is not a “demo” version.

To get you started:
https://html.duckduckgo.com/html?q=eagle+free+download

I’m not exactly sure what this is:

It may work as is, maybe paying USD60 or a one month access is a viable option to convert all your old projects once you’ve gotten used to KiCad.

It has protection scheme. If design is created with pro version then ‘demo’ or ‘student’ version can open it but cannot save.

As there are so different concepts in library management it seems that is better to make new ones.

My habits come from the times when we assembled our products ourselves. I wonted to keep the number of items in our warehouse as low as possible. So I had in library only elements we used previously. Adding a new element (element in a new footprint) was always a deliberate decision.
I had so little elements in different footprints that I had no problem to give them distinct name.

I have similar approach to have but different reason. When I make component I save it to raw library. And when 1st board is done and component is ok then I move that component in verified library and I know that this will fit. I just counted and there are little more than 1000 different components by layout.

Just figured out than eagle demo can save design too but must be smaller than 80cm2. And I do quick test but result seems horible. But can’t find a way how to import library. I now have library in text format.

I suggest you to use a version control system, like Git, Mercurial, SVN etc. Using different folders or naming is not a good idea and the version control systems had been built for handling this mess.

Create development branch, design at there, merge it to the master branch while menufacturing and tag the commit with your production name. This way you can easily track every PCB very easily.

2 Likes

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.