This information HAS errors and is made available WITHOUT ANY WARRANTY OF ANY KIND and without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is not permissible to be read by anyone who has ever met a lawyer or attorney. Use is confined to Engineers with more than 370 course hours of engineering.
If you see an error contact:
+1(785) 841 3089


Related kicad pages


Default Hot-key-list

Working With Libraries

After you run through the tutorial - the next thing to do is learn how the libraries work. Libraries are processed with the subprogram called libedit.


If you are learning to use kicad, it is important to realize at step one that you will need to be able to make your own library parts (I can' think of a project where it wouldn't be true). The first thing you need to do is understand how the library parts are created, modified and extended. Libedit is where eeschema's library files (.lib) are edited. Once a part is edited you need to save it twice - into the current RAM and again to the library (not sure of the why for this?).

Like the rest of the KiCad database, libs are text files and quite readable. While libedit handles most things well, you can use a basic text editor to handle many chores, in particular if you want to make bulk changes to text size or other features, working on the text file is easier than in libedit. Of course observe all the usual cautions when manually changing a database file, but the structure is generally pretty straightforward. Do not leave any blank lines in the file, and be cautious adding comments as sometimes they will break the part (in the DRAW section, for instance).

Managing Libraries

There are quite a few libraries that come with kicad and the temptation is use them just as they are, but the best practice is to create your own library and copy the ones you want to use over. Then if you make changes or adjustments you won't lose them the next time you update the software.

Change name of part in library

In libedit select part to rename, Select edit part properties and select the fields tab. In the "Field to edit" section, choose the "Value/Chip Name" radio button. While the "Value" radio button is selected, edit the "Field Text" to the new part name. Save the library. Select the delete icon and delete the original part name.

Create New Parts Library

From in EESchema select click-on go_to_library-editor" icon. Then select "New Component" icon ... go through the process of creating a part or open an existing one it by clicking on the 'Select a component to edit' icon.

Once you've have a part, use the "Create a new library and save current part into" icon. Then select a filename (ends in '.lib').

After saving - close out libedit. Next, form in EESchema add the new library to library list. You do this in "Preferences/Libs_and_Dir > ADD (button)" - browse and find the library you just created and it will be added to the selection list.

Copy part between libraries

From in EESchema select click-on go_to_library-editor" icon. From within libedit click on the 'Select the working library' icon - select the lib you want to copy from and then click on the 'Select a component to edit' icon and select the part you want to copy.

Now, click on the 'Select the working library' icon again and then the 'save current loaded library on disk' icon.

Define Field names for parts Library

Once you understand how the library works, the next thing you should do is to decide on a default set of fields that you want associated with your parts - this allows you to have the information where it is needed and helps you generate useful BOMs.

There are only a couple of field names (of course the field itself is editable) that can't be changed. These are Ref, Value/Chip Name, Footprint, and Sheet,

Ref (F0)
this is the reference number - its default value will be the reference prefix - R for resistor C for Cap etc
Value/Chip Name (F1)
(the part-name ie 2N2222 (the default name here is confusing!!)),
Footprint(modules) (F2)
The name of the circuit board module that the part points to. Always USE this field and you will never have to mess with Cvpcb! Using cvpcb is discouraged - it is best practice to have parts with differing names if they have differing footprints(modules). If the part can have more than one footprint(module) leave it blank and use Footprint filtering to enter a list of possible footprints.
Datasheet (F3)
(not used? )

The rest of the fields are user fields that default to field1, field2,...field8 and can be changed to anything you want.

I recommend creating a part called 'template' that has the fields you normally use and save it. Then when you create a new part open this 'template-part' and edit it into the new part. I suggest the following fields to use:

Part Properties

While in lib edit you can click on the 'Edit component Properties icon to bring up a tabbed dialog box. This lets you change the details of the component.

Options Tab
As Convert 
This is for logic gates - the convert is the De'Morgan's equivalent of the main part.
Show Pin Num and Show Pin Name
Makes Pin names and numbers visible. Normally checked for chips, but would be cleared for resistors and diodes.
Pin Name inside
Normally checked - it is the norm for chips.
Number of Units
How many op-amps in the quad package? 5 - 4 op-amps + one power part
Distance from the pin end to the pin name text - for name inside only.
Power Symbol
Parts are locked
Doc Tab
A text string (space-separated) that is displayed in various menus in displayed lists of libraries.
key words allow you to search in a selective way for a component according to specific selection criteria

(function, technological family.)

Points to the documentation file for the component - a PDF or schematic.
Copy Doc
Browse DocFiles
Alias Tab

An alias is another name corresponding to the same component in the library. Components with similar pinout and representation can then be represented by only one component, having several aliases (ex: 7400 with alias 74LS00, 74HC00, 74LS37. ).

Add a new Alias
Delete and Delete all
Remove one or all Alias
Fields Tab
Field to Edit
Click radio button to work with a selected field
Show Text
Makes the selected field's text visible when in eescheema
Select to rotate the text side ways.
Field Name 
name of the field - see #Define Field names for parts Library
Field Text 
The text the Field holds.
Size - Posx - PosY
How large the text and what offset the text is at from part the part origin or anchor point
Horizontal and vertical Justify 
Sets the justification of the text - left, centered, or right.
Footprint (module) Filter Tab
Enter a list of allowed modules(footprints) for the component. This list acts as a filter used by CVPCB to display the allowed footprints(modules) only. Wild cards are allowed. S014* allows CVPCB to show all the footprints(modules) with a name starting by SO14 For a resistor, R? shows all the footprints with a 2 letters name starting by R
Delete and Delete all 
Schematic Parts creation

My way is to always start with my template part (you could have several templates made from the first one.) So instead of selecting the New component' icon use the select component to edit icon and change the Value/Chip Name field and save the part. Then start editing.

For fast, efficient pin name entry there is a nice web tool that creates a part for you from your input. http://kicad.rohrbacher.net/quicklib.php

Once you download the automatically created part you should:

Some things in Libedit are difficult to get to, such as changing the font size of the component name. Like all KiCad files, you can always just open the component .lib file in a text editor and make changes. Many fields are obvious, but the definitive reference is in your KiCad installation at ProgramFiles -> KiCad -> doc -> help -> file_formats


Associate schematic decal pins with footprint pins?

Update a part with one newly modified in the library

There used to be a way to do this - no longer works as of 4.0.2 - not sure why(you could update RAM)

I've tried saving to the cache lib - does not work. Reset to library default -does not work.

There should be a better way - but - for now: delete all of such components - then replace from lib.


Electrical Rule Check helps check your schematic for errors based mostly on looking for compatible pin types on a net. For instance, it will tell you if there are two outputs on a single net, or an input with no outputs. Use ERC, don't avoid it. It will save you from dumb errors (are there any other kind?)

Placing multiple components of the same type

Select the component, R-click and from the pop-up menu, "copy-component". If you need to duplicate a block of components, hold shift, L-click and drag a box around them, drag and release.

Copy a block of schematic from one sheet to another

Select the block with the mouse, right-click and select "Save block" Then go to the other sheet and click the "Paste" (Clipboard icon) button in the tool-bar.

Copying from project to project

You can do this by adding the old schematic to the new as a hierarchical sheet and then copying between them.

  1. Copy the old schematic file to the same directory as your new schematic file.
  2. Select the "Add hierarchical Symbol" icon (Right tool bar) and place one on the new schematic.
  3. Enter the file name of the old schematic you copied into the directory including the file name extension. Leave the sheet name blank.
  4. Open the old schematic via the "schematic hierarchy navigator" icon (Top tool bar) or double click on the symbol.
  5. Select the block you want to copy and pick "Save Block" from the context menu.
  6. Open the new schematic via the "schematic hierarchy navigator" icon (Top tool bar).
  7. Select the "Paste" icon and paste the block in the new schematic.
  8. Repeat as required.
  9. Delete the old schematics hierarchical Symbol from the new schematic.
  10. Delete the old schematic file if you want.

Printing to a web viewable file

A better solution than postscript printing is to use Plot/Plot SVG command to write scheme in SVG file format.

Block move

  1. Hold down Ctrl (optional - it only slightly changes the selection criteria)
  2. Press and hold down the left mouse button to begin selecting
  3. You can release Ctrl any time from now
  4. Move to the opposite corner of the selection box and release the left mouse button
  5. Move the items to the desired place and left-click to put them there


Best to use this script: bom_csv_grouped_by_value.py more details To use it, simply add the following line to your BOM dialog:

python <kicad_install_dir>/scripts/bom_in_python/bom_csv_grouped_by_value.py "%I" "%O" 

The output is a CSV file which can be loaded into a spreadsheet. There are 4 blacklists supported, and these are documented at the top of kicad_netlist_reader.py.


Buses don't really do anything other than decorating the schematic - there is no connectivity ( probably a good thing to keep it this way ).

KiCad Hierarchy

The above link is really a decent basic tutorial on all of KiCad, not just Hierarchy.

Page Numbering

KiCad automatically numbers the pages in a hierarchy. Those page numbers then may be used when generating reference designators, so that you know R405 is on page 4. That's good, but if you add a page, or if KiCad renumbers pages in the midst of various editing sessions, a page that started out with R401 and R402 might later have R505. Rare on schematics of a few pages, it is fairly common on more complex hierarchies or schematics with lots of pages or lots of changes.

Unfortunately, there does not seem to be any way within KiCad to lock a page number or to force a page number if it gets changed. Nowhere in the ascii database is there a page number assigned either! KiCad assigns page numbers on the fly, based on the order of the page definitions in the top level schematic. So fixing a page numbering problem is as simple as moving around the page definitions (these are blocks demarked by $Sheet and $EndSheet). Be VERY careful when manually editing KiCad - it is a little delicate. For instance, do not leave blank lines.

Power Flags and Power Symbols

The behavior of power nets follows the rules of all other nets, there is nothing magic. GND, 5V, 12V etc are examples of power nets.

All power nets are created with pins identified as "power input", including the Power Symbols you put all over the place. If they were "power output" then Kicad would complain, because there was more than one. So the Power Flag, is the ONE power output per power net, that makes the ERC happy.

A Power Symbol is really just a component with an invisible power pin. Like any component with invisible power pins, it connects to all pins of the same name. And any net you connect to it then is connected to that net.

The Power Flag can be used to connect power across sheets, but it can also be used on a single page schematic to provide the Power Output for a power net. If you want a GND net and a GND_EARTH net, you need two symbols. The GND symbol has an invisible pin named GND, and the GND_EARTH symbol has an invisible pin named GND_EARTH. Each ground net should have one PWR_FLAG connected to it.

Power Symbol


Creating a Power Symbol from scratch

Creating a Power Symbol by using another symbol as template

Power-Flag Symbol



(should not be necessary - already exists in Power.lib)

Power flag Behavior

Only the pin name is used. Invisible pins which have the Power In or Power Out electrical contact are automatically connected.

For connection, the name of the symbol is not used (From this point of view, if is only a comment).

As of version (2010-03-14) has a feature that lets one turn on invisible power pins in the Preferences/Options of the main menu or by using the icon on the options tool-bar found on the left side.

Connecting Power through a Passive (special use of Power Flag)

Sometimes a passive device (resistor or inductor) is placed between the Power rail and a component's Power pin. This causes ERC to report that the pin is not powered. (Pin connected to some other pins, but no pin to drive it) The Power Flag can be used to fix this.

The Power Flag, as a power output, tells ERC that the component is powered, but it adds no actual component to the net.

This is substantially better than turning off the ERC check or remembering which errors to ignore (two bad practices).

Power-Pin Problems and Best Practices

Eeschema automatically connects invisible power pins, thus all invisible power pins of the same name are automatically interconnected without any effort on your part.

This presents some problems - if you want to keep the grounds separated, (lets say to control noise induced by ground currents) then you can make your own part versions with non-power-port pins (flag "Power Symbol" must be cleared (In libedit, Part Properties/Options).

Some parts call ground pins GND while others may have it as VSS - you can connect them with power symbols for these names. There is some other foot work needed with the use of a PWR_FLAG to prevent ERC from detecting them as unpowered.

Best Practice It is popular to not bring out the power pins on parts - and let power be automatic, this practice might save time, but at the cost of failing to communicate what is going on. A better way.

  1. Create separate power units for logic chips and opamps and put them and their associated bypass caps below the main circuit. This helps to show which bypass-cap is intended for which chip. It also suggests that the bypass needs to be close to the chip it is bypassing.
  2. Don't use invisible power pins. Current flowing on ground returns create voltages - seeing the power connections helps prevent noise problems.

Connecting Grounds at a Pavilion or Net-Tie

Hierarchical sheet names and net-names

In the netlist file you will see global netnames appear with out any prefix. All other net names will have the sheet path as a prefix. Thus on the root schematic, the netname "mylabel" appears as /mylabel.

A label defined in the sheet "mysheet", inside the sheet "parentsheet", inside the root sheet is named /parentsheet/mysheet/mylabel. WARNING: this means that if there is a space or other typography in the sheet name ("My A/D sheet") that will appear in any net name from that sheet ("/My A/D sheet/trig"). Many CAD tools will not like this. PADS for instance will ignore text after the space, so all nets from that page would get named "/My" which is probably not what you want.

Global labels (like powers) are not prefixed because they are not defined in a specific sheet, and they are known in all sheets. They are named VCC, GND ...

Inside a complex hierarchy ( sheet used more than once) , for instance mysheet found in sheetOne ans sheetTwo, the label mylabel found in mysheet is named: /sheetOne/mysheet/mylabel and /sheetTwo/mysheet/mylabel because they are actually 2 different nets. (like 2 different files named myfile in two different directories)

Top Page wiki Index


(C) Copyright 1994-2019
All trademarks are the property of their respective owners.