Kicad/FAQ

What is KiCad?
KiCad is an open source, multi-platform EDA (Electronic Design Automation) package. It will capture your schematics, build your parts libraries and lay out your PCBs. It runs under Windows, various flavors of Linux and has been ported to the Mac OSX.

What is the official name for KiCad EDA?
"The official name I prefer is KiCad"

Jean-Pierre CHARRAS

How is it pronounced? Is it "KEY-cad", "KYE-cad" OR "kay-EYE-cad"?
The French pronunciation is near KeeCad.

Where can I get KiCad?
Please look at the | Download KiCad page.

Where can I find a KiCad tutorial?
The KiCad Tutorial can be found in the doc folder (or the tutorial folder for older versions) of the installed KiCad tree or at https://docs.kicad.org/.

There are many KiCad video tutorials on Youtube.

The KiCad.info Forum has an excellent tutorial "Tutorial: Introduction to PCB design with KiCad version 5.1 (Getting Started)" and is also a good place to ask questions.

Sparkfun has links to some excellent tutorials: "Beginner's Guide to KiCad".

Renie S. Marquet created a mini tutorial with a simple RS232 adapter on his site. This is only in Portuguese but, it has many pictures, including the tools to use. Perhaps it will help you.

Renie's tutorial is basic, but covers all steps from zero to creating the schema and pcb.

There is another tutorial available from an enthusiast at KiCadHowTo.wikidot.com

Is this the official KiCad wiki?
No, this FAQ copied from the Official International KiCad wiki. (Now offline).

Bryan Stillwell originally set up a wiki on November 23, 2005 (now offline) but it has been recently moved to http://kicad.sourceforge.net/. (also offline)

The official FAQ is apparently (?) at http://www.kicad-pcb.org/display/KICAD/Frequently+Asked+Questions -- but is it a wiki?

The (unofficial) wiki at http://en.wikibooks.org/wiki/kicad is apparently the most active KiCad wiki.

Can I help with KiCad development?
"How can I help improve KiCad?"

Of course you can. Here is KiCad developers mailing list:


 * [mailto:kicad-developers@lists.launchpad.net Developers]
 * Developers Archive


 * contributing footprints (FIXME:)
 * Translating the KiCad GUI (human languages)
 * Contributing to KiCad (application) development (computer languages)

You are welcome to download the complete source code and documentation, and suggest improvements at https://gitlab.com/kicad (mirrored at https://github.com/KiCad )

Why does KiCad try to connect to the internet?
KiCad does not connect to the internet. It uses sockets for client-server communications from eeschema to pcbnew. Some firewalls misinterpret socket access as internet access.

ie. When you click on a pin in eeschema, the corresponding net is highlighted on the board.

Jean-Pierre CHARRAS

PROJECT MANAGER
If my product uses a stack of 2 PCBs, should I put each PCB in its own "project" folder, or put them both in a single "project" folder?

How do I output other netlist formats?
Such as the standard EDIF netlist format?

eeschema have a NetList plugin system. eeschema creates a generic (intermediate) NetList output (generic list of components, list of pins and list of nets). The plugin reads this generic file and creates the new NetList format, and eeschema can run automatically this plugin. This plugin is very easy to create because the generic NetList output is designed to make such a plugin straightforward. A sample is given, with comments to create new plugins. Currently this sample creates a PADS-PCB NetList format. (Note, this format is not very well tested.)

The new eeschema NetList tool had up to 8 user programmables entries to launch these plugins. The first time you use it, you must open the NetList dialog box, open the blank page (the last entry) and :
 * give a title (ex: PADS-PCB)
 * give the command line to launch the plugin (e.g. /usr/lib/kicad/plugins/netlist_form_pads-pcb or d:/kicad/bin/plugins/netlist_form_pads-pcb.exe)
 * run the NetList generator (like the other formats).

This version is unstable because the user interface may be modified, and the documentation is not yet updated.

If you use this feature, please report any problems.

Another work-around is the Edif to KiCad translator.

How do I copy and paste from one schematic to another?
To copy a block from a schematic, open your previous schematic, select the block to copy and in pop-up menu (right click), and choose Save Block (or delete block but DO NOT SAVE YOUR OLD SCHEMATIC).

Within the same window, use the menu to open the new schematic and press the Paste button (tool bar). The block will be pasted into your new schematic.

To copy components from a schematic, select the components you want to copy/cut using the right mouse button to select copy/paste from the pop up menu, and then press the escape key. That will return the selected components to the starting point. Switch to the other schematic and paste the component.

If you want to copy icons, you must deactivate the "auto pan" option in preference menu.

As an alternate option, you can enter the block command with holding the shift key (copy) or shift+ctrl keys (delete) ( See doc eeschema 2.2.2)

How to update a part with new modifications from the library
There is a bug (in Release: 2006-08-28) that keeps the fields from getting updated - best to delete the part and re-add it at this time if you use fields.

Non-homogeneous multi-part modules?
Part-A is the default. Load the part, right click on it, select edit->unit, and change the part-A to part-X

For Non-homogeneous multi-part components, do not forget to check (in library editor) the "Parts are Locked" option for these components.With this option, Eeschema does not change the part selection when annotates the schematic.

Jean-Pierre CHARRAS

What are Markers in the Locate dialog?
Markers are from the ERC - and show where there is an error.

How does one import the .stf file into a schematic and what does it do?
.stf files are generated by CVPCB (stuff file). It consists of a line for each component, giving the name of the footprint according to its reference.

Example:

If the U3 component was assigned the footprint 14DIP300, the generated line is comp “U3” = module “14DIP300”

In EEschema svn version (r1064) a button was added to back-annotate Footprints from a "Stuff File" to the schematic.

Use case: The process for keeping the schematic up to date would be:

eeschema:
 * enter starting schematic
 * output initial netlist annotated with ref designators

cvpcb:
 * read initial netlist
 * add missing footprint info
 * output modified netlist & stuff list (with footprint info)

pcbnew:
 * the modified netlist could be used to start initial placement
 * save working pcb

eeschema:
 * back-annotate footprint info from "stuff file"
 * modify schematic if desired, maybe change a few footprints
 * output updated netlist (containing footprints)

pcbnew:
 * import updated netlist with new components, optionally removed unused parts no longer in netlist
 * place new components

libedit
Schematic symbol creation and editing.

There are two ways to save the part - one to RAM and the other to the library. What is the use of this?
If you save your modifications into RAM, you can go back to your schematics and see the result of it. If you don't like it, you can still "roll back" to the previous situation. If you save your part into the library, there's no way back any more.

If you change a part in the library - what do you have to do to update a part in a schematic?
In fact, it's done automatically for you, when you press the button to save the modified part into RAM. The only thing which apparently doesn't work yet (release 2006-08-28) is the update of the fields. But you will see your modified drawings at least.

How do I create a new parts library?
In EESchema select the icon "Go to library editor". It opens with a clear view and Libedit: No Lib header. Then select "New Part" icon ... go through simple questions and you are ready to draw your own part.

Once you've created it - use "Create a new library and save current part into". Than select location and give a filename. For example, I made my own directory at /home/xtc/kicad/libs_xtc - where I save all my personal lib files.

When You finish editing our part - save and close. Then in EESchema you have to add this new library to library list. You do this in "Preferences > Libs&Dir > ADD (button)" - browse to find your library and it will be added to list. From now on - your part will be visible in place_part dialog list.

libbrowse
This allows the user to see which parts are contained in each library of schematic symbols. This can speed up the creation of a schematic project by allowing the user to directly load a library and go directly to a specific part. If the part needed can not be found in a library it can be created in LibEdit (described above) or look for libraries on the internet.

Power Port in Hierarchical Sheets? global or only local to the specific sheet?
A single power flag is used for each power rail. It is global across the design, so you would have one power flag on VCCA for the whole design. A power port is global in that a VCCA port on one sheet is connected to a VCCA port on another sheet.

CVPCB
CVPCB is for associating footprints (modules) with schematic parts.

If you create a new component in LibEditor and you immediately assign a footprint to it (Icon "Edit component properties -> Footprint filter -> Add), then CvPcb will automatically filter the footprints. For example, enter "14*" in Libedit will make CVPCB propose to you 14DIP-ELL30 and 14dip300 (assuming you have selected "Display the filtered footprint list for the current component").

How can I use relative coordinates?
Press the SPACE-key at the position where you want your relative coordinates origin. Now you can read the relative coordinates at the status bar, at the right of the absolute coordinates.

How do I manually route a PCB?
Manual routing is straight forward. You don't even need to have a schematic. Start a new project then select PcbNew. Right click in the drawing area and select Select Working Layer. Set working layer to edges PCB. Select Line tool from RHS and draw PCB outline.

Now right click and select working layer copper. Select Add Tracks and Vias tool from RHS toolbar. Draw your tracks. You can place a via by pressing the V-key.

To change track size you need to create a new track type. From the main menu select Dimensions then Tracks & Vias. Fill in the values for your new track size and press OK. Your new track type is now in the tracks drop down box.

If you have a schematic then start Pcbnew as normal. Choose the Add Tracks and Vias tool from the RHS toolbar and click on a ratnest. Be sure you are working on the components layer for single sided PCB with SMD components. If you are using default colors all tracks should be red. If you get green tracks, you are working on the copper layer.

How do I unroute a PCB?
In Pcbnew select the Edit/Global Deletions menu and in the dialog that pops up check the 'delete tracks' option then click the Accept button.

How do I connect a copper fill to a net?
One method is while in the fill zone mode you move the pointer inside the track, right click and choose "select net". Then you can do "fill zone" from anywhere outside the track.

You could also use the 'net highlight' tool. This took me forever to figure out actually. I would expect some option in the Fill dialog to select a net to connect to.

How I can move SMT components to the solder side
With "flip module" in the pop-up menu. You can also press the "F" key to do the same thing.

How do I change the grid size inside the library editor?
Right click and choose grid select.

What's the difference between printing and plotting PCB layouts?
New in pcbnew, in the print menu, is a new scale option: "Accurate scale 1", which prints the board at scale 1.00, but does not keep exactly the board position in page. The Approx. scale 1 (old option) keeps the board position in page and is intended to produce documents for users. The real scale depends on printer, margins, pcbnew page size and real paper size, and is intended primarily for documentation purposes.

There is also a change in page margin management, both in eeschema and pcbnew. Margins reduce the user drawing area for 0.4 inch (10mm) on left, right, top and bottom sides. In older versions, there was no margin, and the schematic drawings were drawn at reduced scale (smaller than scale 1), to fit in page + margins. In the new version the scale is near scale 1, and the page setup in the print dialog window is removed.

There are two reasons for this:

1 - The print dialog window page setup option is buggy under Windows (this is a wxWidget problem, not a KiCad problem). Therefore, the user could not really change the margins values, or the printer paper size.

2 - Boards now can be printed at exact scale 1, and the necessary margins reduce the user drawing area. (old versions drew the board at nearly 0.95 scale mainly to fit in the usable paper area, which is the paper size - margins).

The margin setup dialog is not currently available (currently, margin values are hard coded), but i hope i put this feature in a next release of KiCad.

Jean-Pierre CHARRAS

How can I print a PCB mirrored?
There are two ways to do it:

First, Pcbnew has a mirror option in File/Plot menu (Postscript format). Secondly, modify the board by the "Flip block" command ( Block command: select the whole board, right click and select flip bock).

How do I make PCB mounting holes?
A hole can be seen as a footprint, with only one pad. You can add one (or many) footprint (right toolbar, button "add module") like the "1pin" footprint existing in library. Edit the pad in order to have the correct size (pad diameter and drill value).

How do I make a ground or power plane?

 * Select Add Zones icon
 * Trace the limit of the zone. You do not need this step if you have defined the edges of the board on the edges Pcb layer and if your zone is going to follow these edges.
 * Place the cursor on a pad belonging to the net you want for the plane, (GND or any other)
 * Click right on the zone an select fill zone

Note that the pads belonging to this network must already be connected by tracks, else the design rule test will see them not connected. The addition of the zone must therefore be done at the end.

''NOTE: Can anyone explain "You do not need this step if you have defined the edges of the board on the edges Pcb layer and if your zone is going to follow these edges." any better? Is it really possible to have a zone in PcbNew automatically fill the Pcb Edges? How exactly do you do it?'' <-- It seems you actually still need to trace the limit of the zone if you want the zone to extend to the edge of the PCB but it is sufficient to just draw the zone around the whole PCB. If you have a circular PCB, for example, then you draw a square outside the edges of the PCB limits. Then when you fill the zone only the area inside the PCB edge will be filled.

How do I add vias to a zone?
To make a via connecting two zones (for instance joining ground or power planes between layers) the via needs to be connected to a net:


 * 1) Select the option 'Add tracks and vias'
 * 2) Left click on an existing pad or track in the zone where you want the via. The pad or track should be on the same net as the zone (ie if the zone is a ground plane then choose a nearby ground pin.)
 * 3) Click again where you want the via, to create a track.
 * 4) Without moving the mouse, right click and select 'Place Via'
 * 5) Without moving the mouse, right click again and select 'End Track'

Now you have a via...

The track you created will be covered by the zone, so it serves no actual purpose except to assign the via to a net. It's needed because of an outstanding bug/limitation in Kicad (bug report/developer discussion) where unconnected tracks/vias lose their net association after the board is reloaded or DRC is run.

How do I rotate a footprint by a specific angle (e.g. 45 degrees)?
Tested with pcbnew SVN r890


 * 1) Right click on the module you want to rotate
 * 2) Select Footprint ... (Component) -> Edit to open the Module Properties dialog
 * 3) Here, in the Properties tab, select User in the Orient section
 * 4) Now you can enter an arbitrary angle in the Orient (0.1 deg) box. You have to multiply your angly by 10, e.g. enter 450 for 45°

How do I make coils for planar cores?
I make Switch Mode Power Supplies. I use a sandwich of two ferrite cores around one ore more PCBs to make a transformer. How do I make make arc tracks and spiral coils ? Erik

Does Pcbnew have an autosave facility?
This function exists in PCB editor. Better consider buying UPS.

I don't know if it's a good feature since there is no undo-redo mechanism and conscious saving looks like the only way to go back in editing.

XTC

How can I make my own default footprints?
A convenient method is to create .equ files and use the automatic association command with cvpcb. This is because for many components, the "standard default footprint" depends on the value. Diodes, Polarized Capacitors are an example. For most of the components you can use an SMD version for a project and later the "standard" version for another project.

With a .equ file you can have a "standard default footprint" which solves this because the .equ files can be specific to a project.

here is an example ( see kicad/modules/devices.equ) '680K'  'R4' '1M' 'R4' '2,2PF'  'C1' '3,3PF'  'C1' '74HC00'   '14DIP300' '74LS00'   '14DIP300' '74HCT00'    '14DIP300'


 * .equ file gives the standard default footprint from the component value and can be created by your favorite editor. The editor replace command can very quickly change the 14DIP300 to SO14E for a SMD based project...

In kicad/modules/ you can find some .equ files.

Do not forget to configure cvpcb to select the .equ files you want.

Why the 3D viewer doesn't work?
You must ensure the color depth of your graphics card is set to 24 or 32 bits.

In Linux you can edit /etc/X11/XF86Config-4

and change the line

DefaultDepth 24

Module editor
PCBnew also contains the module (foot-print decal) editor where you can change and create modules.

How do I place vias in the module editor?
Some packages, such as QFN, require thermal vias in a particular arrangement. How do I do that with KiCad?

What do the different numbers mean in the gridding drop-down. i.e. the "10" in "Grid 10.0" and "100" in "Grid 100.0"
By default, KiCad operates in inches (see the I and mm buttons along the lefthand side toolbar to switch to mm). When the grid is set to 100, it is using a spacing of 100 mils, or 100 thousandths of an inch - .1", at Grid 10, it is .01". Make sure the grid in your work field is visible by clicking the grid button on the left hand toolbar.

The Grid 100 spacing of .1" is convenient as .1" is also the spacing for pins of a standard DIP package as well as many other components. The distance between rows is usually .3". In metric it would be 2.54mm between pins and 7.62mm between rows. Of course there are also variations with different package types.

How can I force the autorouter to work on only one layer?
I have discovered I can force the autorouter to work only on the copper side by selecting copper for both layers in the Select Layer Pairs dialog.-

NB: This possibility was inopportunely forgotten in certain versions, but should be restored soon (version of June 2008).

The other way is to first create a keepout area in either one layer and then use autorouter, thus the autorouter will be forced to use only the other copper area for routing.

MUCS-PCB Autorouter
This is not actually part of kicad - but has been recommended as a better auto router than the one that comes with kicad.

But be aware, that Jean-Pierre Charras, the author of Kicad, wrote in Sep 5, 2005:


 * I know this autorouter, and I have written an implementation for pcbnew, but i do not released it.
 * This is because unfortunately, there are some problems:
 * - Some (many?) bugs.
 * - The *main* problem is the router do no know the 45° for tracks and pcb edges. This is very hard to change because the code is *very* optimized to handle only 90° tracks and edges.


 * I believe DJ Delories has solved some of theses problems ( mainly for the free software "PCB"), but I do not know this patched version.

Where to get MUCS-PCB
* http://www.cs.manchester.ac.uk/apt/projects/tools/mucs-pcb/ MUCS-PCB autorouter

Where can I get other component libraries?
There is a library folder in the files section of the group for just this purpose. Feel free to create your own sub folders and contribute your work.

How do I import libraries from other PCB programs?
Eagle

I just uploaded "exp-kicad-lib.ulp" under the rm_sharkey_libs folder in the files section of the group. This is a ULP script to export EAGLE PCB parts to KiCad. To use, open EAGLE PCB, load the library you're interested in, into the library editor, and then run this ULP script.

It has one bug that I have not gotten around to fix yet (I did not write this script). The bug is in selecting the correct layer for the pads. However, even in it's current state, you can manually edit the KiCad output and touch up the pads using search and replace, just compare with a similar "good" KiCad lib and you'll see what has to be modified. Aside from that, it does a pretty good job of exporting.....maybe if someone has some time they could tweak this script a bit to make it work better.

(Mike Sharkey)

I've wrote a simple script for exporting pcbnew libs from Eagle CAD libraries but don't know what kind of restrictions eagle's librarians apply to their libraries. I've uploaded about 200 converted libs on our ftp server and using them now. Please look at it and say me what are you thinking about. I think it will be good if that libs be available to all KiCad users.

(Dmitri N. Sytov)

Large Converted Library
A large number of symbols and footprint converted from an Eagle Library can be found:

Link: http://library.oshec.org/ (Download All)

User beware that compatibility with KiCad should to be verified: long pins names, valid file names, geometry, pin assignments, etc

''In particular, KiCad chokes on the "m-pad-2.1.mod" file merely because of its file name. Work-around: rename to "m-pad-2-1.mod"; then that library works fine with KiCad.''

How can I generate an array of pads fast?
I've uploaded one perl script I made to the yahoo files section. (jpdborgna folder). I append the readme file of that.

The function of this simple script is to generate pad arrays, the symbol and the module, for using with KiCad. These arrays can be used for pins connectors, for prototyping areas or for any other component which requires many pads uniformly distributed. Given the simplicity it can be easily modified to make other functions.

Netlist

 * Netconv - TinyCAD netlist to KiCAD pcbnew netlist converter
 * TTConv, image2kicad, scalePCB and other python functions

Schematic

 * EDIF2KiCad - OrCad EDIF out to KiCad schematic, libs converter
 * PCadToKiCad - schematic capture, board layout and library files conversion from P-CAD 200x ASCII to KiCad

PCB

 * XML4PCB - PCB123 XML out to KiCad's pcbnew converter

What are the steps involved in making a change in a design?
There is more going on that just creating a new netlist and importing it -: the .stf file may be involved - how are changes to the footprint handled? This dosn't quite work as documented in (2006-08-28)

Is there a forward and backward eco process going on? Is there inter process communication going on between eeschema and pcbnew? I read that there was - but what is it doing?

Posting Guidelines
The group is very young so there is as yet no group policy for posting guidelines., However, as a start I recommend we adopt the standard netiquette guidelines in Section 3 of RFC 1855 which can be found here:

http://www.dtcc.edu/cs/rfc1855.html

Who wrote this FAQ?
This FAQ was written and is maintained by Ian Bell. Contributors include:


 * Juan Pablo
 * Jean-Pierre CHARRAS
 * Ryan Williams
 * Fluissman
 * Bryan Stillwell
 * Renie
 * Danilo Uccelli
 * XTC
 * Igor Plyatov

Where do I submit new/updated libraries?
Is KICAD Libraries (http://kicadlib.org/) an official project site? Where is the submission link? Is it best to submit the additions/changes individually, or to integrate them into the appropriate pre-existing library?

How do I draw schematic dotted lines?
How do I draw dotted lines on the schematic page? How do draw dotted lines in a schematic symbol in a library?

The "place graphic lines or polygons" tool in the right toolbar appears to be dotted. I can change the color of all lines drawn with that tool using Preferences >> Colors >> Notes.

But all the lines it draws are solid -- do you really expect me to draw hundreds of individual little dashes?

The KiCad project is open source. Feel free to add "dotted" line styles to the "graphic polyline" tool.