High level thinking


This is my first post and I am very new to this software. I have just installed Kicad v5 on Linux Mint. My background sees me using Protel for a number of decades. I see myself as quite proficient at Protel.

My first goal was to try to adapt a library footprint and to copy / adapt a schematic diagram for a part. I am wanting to transfer a project from Protel DXP as my first project in Kicad. So I am thinking I’ll need to get all the schematic parts built and the footprints also.

I’m having difficulty copying a schematic part and also adapting a footprint. I don’t have permissions to adapt the footprint for a start. I tried to save some changes but it wouldn’t allow me to do this. I don’t know now how I got to actually see the footprint mind you but I was adapting a part yesterday !

What is the overall thinking with Kicad ? Does one take parts from the standard libraries to build a set of your own libraries or does one adapt what is there ? My main ucontroller is a PIC18F47K42 which is not in the list of parts - probably because it is too new - but it will be similar to something in the library.

To be honest, I’m clicking around the place and getting a lot of blank screens at the moment - not a good start !


Do not modify libraries that are shipped with kicad. Your modifications would be overwritten on the next update of the libraries. Make your own personal libraries.

I have written a few tutorials that could be useful for you. Currently i only have some for the footprint side of things.

As you come from a different software, you might also be interested in how kicad makes the connection between footprints and symbols.

For the symbol side of things first create a personal lib (if you do not already have one)
This is done in the symbol editor. There are 3 options:

  • File -> New library
  • Button in the top toolbar (the leftmost button)
  • Leftclick in the left sidebar -> new library

After using one of the options you will be asked where to save the library under what name. Depending on your needs either save it in the project directory (for project specific parts like a specialized connector or if you want your uC to have project specific pin names) or put it into some central space of your choosing. (Any storage area where you have write access will do.)
After giving the storage location, kicad will ask you if you want to add the newly created library to the global or local library table. (global means all projects will have access to it, local means only the current project will have access to the library. The later makes sense if you have stored the lib inside the project directory, the former if you stored it somewhere else.)

After that your personal lib should appear in the left sidebar. You can now add new symbols to it by left-clicking on the library name -> add new symbol.

If you want to store a modified version of some symbol found in another lib in this lib simply navigate to your source symbol (the filter field on the top of the toolbar will be of great help here). Left click the symbol -> copy. Navigate to your target lib, left click its name and choose paste.

To change a symbol name you need to edit the “value” field. This can only be done in the symbol view.
Open the symbol by double clicking it in the left toolbar. The symbol will now be shown in the large canvas area. You should see a text field with the same content as the symbol name somewhere on the canvas. To rename the symbol you need to edit this field. right click it -> edit. (or use the shortcut e)


Thank you Rene for your wonderful reply. I shall set about things as you have directed me.


How do I delete a schematic library ? I just went through the process of making it but I wanted to change the name. So I now want to delete it. Do I use the file browser to delete it ? Won’t there be a database somewhere looking for it ?


Simply remove it from the library table (the manager for it is found under the preferences menu)
After that you can delete it from disk using your file browser

Symbols can be deleted using the right click menu.

For footprint libs it works the same. For deleting footprints there is a button in the top toolbar (looks like a recycling bin) Or use Edit -> delete.

OK. I’m progressing thanks to your help. Can I ask how to change the size of the rectangle that is in a schematic part that represents the body of the device ? It is usually background-coloured a yellowy / tan. I can’t seem to grab it and change its size.

I’ve made a couple of libraries and have copied and modified a number of components. The graphical editing is very clunky but I am getting there. My cursor is both a crosshair and a pointer - is that normal ? The cursor is jumping in grid increments rather than smoothly traversing the screen I hope this is not because of a graphics card issue.

Thanks again Rene,

In the symbol editor you can rightclick the corner or edge of the rectangle -> drag rectangle side or use the shortcut G while your mouse is above a corner or edge

You can only change it in grid steps. The grid can be changed by rightclicking somewhere on the canvas ->grid or in preferences -> general settings.
Be aware that eeschema can not snap to anything else then the grid. So make sure the pins are on the same or a larger grid than you intent to use in eeschema.


I’m not used to using the right mouse button obviously. Wow. I could almost use this for real I think. It’ll take a while to re-create all my libraries but once I’m done it may just do the trick. I am really pleased about the rounded rectangle pads - absolutely overjoyed to be frank. It is such a pain in Protel. The other thing I like is that teardrops are a possibility. The Protel teardrops are clunky and oversized to my liking. Finally, for now, the concept of a slot in a pcb pad is possible too.

Thanks again,

As far as i know there is no native way to get teardrops in kicad. There have been a few attempts to get them done but nothing got to a stage such that it could be included in the software.

There is no native way to add teardops to all pads quickly. But you can draw a zone over the area a pad joins to a trace to get the same effect.

Aren’t teardrops most important for vias?
Vias typically have the smallest smallest annular ring on a board. This means that drill misalignment hits them the hardest. (Drill misalignment is the thing you want to protect against with teardrops)
Adding zones to all vias manually sounds like a lot of work. Especially if you take maintenance of your product into account.

Like I said, no way to accomplish it quickly, But in its current form, you still can,

If your following the design rules of the fab its highly unlikely you will have a breakout 0.2/0.2mm trace/space and 0.3/0.6mm Via hole/pad diameter. Again these rules are cheap to fab because the error margin is highly in there favor,

Its only when you go for higher spec requirements that you risk breakout, and in these cases there would only be certain parts of your board you would route at the minimum feature size.

Its flex PCB’s, RF Layout and heavy component flex points that you want smoothed teardrops in most cases. anywhere a sharp transition can cause a fatigue point, or impedance disturbance.

For high reliability Its almost always better to use thicker traces and larger Via sizes than to slap teardrops on the minimum size. its only those few you need the smallest for , that you add the teardrop to.


In a general sense, does one build a schematic for each part and then share a common footprint -OR- does one build a schematic and pcb footprint pair ? It could also be possible in many instances to share a schematic also and just label it differently and also share the footprint. I’m thinking op-amps in particular.

I’m not familiar enough with how things are ordered behind the scenes and I’m building libraries now. It is probably best I ask the question before I get too far into it.


I am now assuming that with schematic you mean symbol. Under schematic one would normally understand the full drawing of a circuit consisting of wires and a number of symbols. (plus maybe labels and subscheets but i think you should get the point.)

As a pre requirement you might want to read these 3 faq articles (As i do not know how knowledgeable you are about the kicad library system)

Kicad is very flexible in what you can do with its library system. Major workflows:

  • Assign the footprint in the library (Fully specified symbols)
  • Assign the footprints at the end of the design process (Generic symbols)

The later process has the benefit that you can move the part selection towards the end of your design process. It allows a few symbols to represent a large number of parts meaning your library will be a lot smaller (less maintainance work, easier to find stuff.)
It is a bit hindered by the fact that the symbol pin numbers are fixed. This means you need two symbols for every pin arrangement (see the 3 generic symbols that exist for transistor pin numbering schemes.)

The former requires you to think up front what part you will use. It allows you to include more information in the symbol and therefore the BOM. It also allows you to have a set of trusted symbols that are already connected to a trusted footprint. This will reduce your error points over the long run. (More up front investment, high pay-off later on.)

I personally would use a mixture of the two. It does not really make sense to have a specialized symbol for every resistor. But it makes sense to have one for a micro controller that is already connected to the correct footprint.

Regarding footprint:
Here we also have a similar split. Use generic footprints (So one footprint for an SOIC-8_3.9x4.9mm_P1.27mm for all parts that use that particular package)

Use “atomic pairs”. This is a special case of a fully specified symbol where the symbol references a footprint that is “reserved” for that one footprint.

This has the benefit that a BOM created from the pcb side can include more information (pcb_new only knows about referece, value and footprint name. So if you want your pcb_new BOM to include some information it must be part of these 3 fields).

My personal opinion is that the BOM should be created on the schematic side. If a BOM is created from pcb_new then one can combine it with the schematic BOM to get the additional informations in there. This means atomic footprints don’t make that much sense to me.

Some parts however have both a highly specialized symbol and footprint. In such a case i would use specialized footprints. (An example would be a relay.)


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.